mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Added plugin generators (and a couple of TODOs).
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
require 'generators/actions'
|
||||
require 'generators/error'
|
||||
|
||||
module Rails
|
||||
module Generators
|
||||
class Error < Thor::Error
|
||||
end
|
||||
|
||||
class Base < Thor::Group
|
||||
include Rails::Generators::Actions
|
||||
include Thor::Actions
|
||||
@@ -45,7 +47,7 @@ module Rails
|
||||
#
|
||||
def self.generator_name
|
||||
@generator_name ||= begin
|
||||
klass_name = self.name.gsub(/^Rails::Generators::/, '')
|
||||
klass_name = self.name.split('::').last
|
||||
klass_name.gsub!(/Generator$/, '')
|
||||
klass_name.underscore
|
||||
end
|
||||
@@ -71,7 +73,8 @@ module Rails
|
||||
# Small macro to add test_framework option and invoke it.
|
||||
#
|
||||
def self.add_test_framework_option!
|
||||
class_option :test_framework, :type => :string, :aliases => "-t", :default => "testunit",
|
||||
# TODO Reduce the example name
|
||||
class_option :test_framework, :type => :string, :aliases => "-t", :default => "test_unit",
|
||||
:desc => "Test framework to be invoked by this generator"
|
||||
|
||||
define_method :invoke_test_framework do
|
||||
@@ -80,7 +83,7 @@ module Rails
|
||||
|
||||
begin
|
||||
invoke name
|
||||
rescue Thor::UndefinedTaskError
|
||||
rescue Thor::UndefinedTaskError # TODO Ensure this message is called.
|
||||
say "Could not find and/or invoke #{name}."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
module Rails
|
||||
module Generators
|
||||
class Error < Thor::Error
|
||||
end
|
||||
end
|
||||
end
|
||||
13
railties/lib/generators/rails/plugin/USAGE
Normal file
13
railties/lib/generators/rails/plugin/USAGE
Normal file
@@ -0,0 +1,13 @@
|
||||
Description:
|
||||
Stubs out a new plugin at vendor/plugins. Pass the plugin name, either
|
||||
CamelCased or under_scored, as an argument.
|
||||
|
||||
Example:
|
||||
`./script/generate plugin BrowserFilters`
|
||||
|
||||
creates a standard browser_filters plugin:
|
||||
vendor/plugins/browser_filters/README
|
||||
vendor/plugins/browser_filters/init.rb
|
||||
vendor/plugins/browser_filters/install.rb
|
||||
vendor/plugins/browser_filters/lib/browser_filters.rb
|
||||
vendor/plugins/browser_filters/test/browser_filters_test.rb
|
||||
41
railties/lib/generators/rails/plugin/plugin_generator.rb
Normal file
41
railties/lib/generators/rails/plugin/plugin_generator.rb
Normal file
@@ -0,0 +1,41 @@
|
||||
module Rails
|
||||
module Generators
|
||||
class PluginGenerator < NamedBase
|
||||
def create_root
|
||||
self.root = File.expand_path("vendor/plugins/#{file_name}", root)
|
||||
empty_directory '.'
|
||||
FileUtils.cd(root)
|
||||
end
|
||||
|
||||
# TODO Check class collision
|
||||
|
||||
def create_root_files
|
||||
%w(README MIT-LICENSE Rakefile init.rb install.rb uninstall.rb).each do |file|
|
||||
template file
|
||||
end
|
||||
end
|
||||
|
||||
def create_lib_files
|
||||
directory 'lib'
|
||||
end
|
||||
|
||||
add_test_framework_option!
|
||||
|
||||
class_option :with_tasks, :type => :boolean, :aliases => "-r", :default => false,
|
||||
:desc => "When supplied creates tasks base files."
|
||||
|
||||
class_option :with_generator, :type => :boolean, :aliases => "-g", :default => false,
|
||||
:desc => "When supplied creates generator base files."
|
||||
|
||||
def create_tasks_files
|
||||
return unless options[:with_tasks]
|
||||
directory 'tasks'
|
||||
end
|
||||
|
||||
def create_generator_files
|
||||
return unless options[:with_generator]
|
||||
directory 'generators'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
20
railties/lib/generators/rails/plugin/templates/MIT-LICENSE
Normal file
20
railties/lib/generators/rails/plugin/templates/MIT-LICENSE
Normal file
@@ -0,0 +1,20 @@
|
||||
Copyright (c) <%= Date.today.year %> [name of plugin creator]
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
13
railties/lib/generators/rails/plugin/templates/README
Normal file
13
railties/lib/generators/rails/plugin/templates/README
Normal file
@@ -0,0 +1,13 @@
|
||||
<%= class_name %>
|
||||
<%= "=" * class_name.size %>
|
||||
|
||||
Introduction goes here.
|
||||
|
||||
|
||||
Example
|
||||
=======
|
||||
|
||||
Example goes here.
|
||||
|
||||
|
||||
Copyright (c) <%= Date.today.year %> [name of plugin creator], released under the MIT license
|
||||
23
railties/lib/generators/rails/plugin/templates/Rakefile
Normal file
23
railties/lib/generators/rails/plugin/templates/Rakefile
Normal file
@@ -0,0 +1,23 @@
|
||||
require 'rake'
|
||||
require 'rake/testtask'
|
||||
require 'rake/rdoctask'
|
||||
|
||||
desc 'Default: run unit tests.'
|
||||
task :default => :test
|
||||
|
||||
desc 'Test the <%= file_name %> plugin.'
|
||||
Rake::TestTask.new(:test) do |t|
|
||||
t.libs << 'lib'
|
||||
t.libs << 'test'
|
||||
t.pattern = 'test/**/*_test.rb'
|
||||
t.verbose = true
|
||||
end
|
||||
|
||||
desc 'Generate documentation for the <%= file_name %> plugin.'
|
||||
Rake::RDocTask.new(:rdoc) do |rdoc|
|
||||
rdoc.rdoc_dir = 'rdoc'
|
||||
rdoc.title = '<%= class_name %>'
|
||||
rdoc.options << '--line-numbers' << '--inline-source'
|
||||
rdoc.rdoc_files.include('README')
|
||||
rdoc.rdoc_files.include('lib/**/*.rb')
|
||||
end
|
||||
@@ -0,0 +1,2 @@
|
||||
class <%= class_name %>Generator < Rails::Generators::NamedBase
|
||||
end
|
||||
@@ -0,0 +1,8 @@
|
||||
Description:
|
||||
Explain the generator
|
||||
|
||||
Example:
|
||||
./script/generate <%= file_name %> Thing
|
||||
|
||||
This will create:
|
||||
what/will/it/create
|
||||
1
railties/lib/generators/rails/plugin/templates/init.rb
Normal file
1
railties/lib/generators/rails/plugin/templates/init.rb
Normal file
@@ -0,0 +1 @@
|
||||
# Include hook code here
|
||||
@@ -0,0 +1 @@
|
||||
# Install hook code here
|
||||
@@ -0,0 +1 @@
|
||||
# <%= class_name %>
|
||||
@@ -0,0 +1,4 @@
|
||||
# desc "Explaining what the task does"
|
||||
# task :<%= file_name %> do
|
||||
# # Task goes here
|
||||
# end
|
||||
@@ -0,0 +1 @@
|
||||
# Uninstall hook code here
|
||||
@@ -1,8 +1,8 @@
|
||||
require 'generators/named_base'
|
||||
|
||||
module Rails
|
||||
module TestUnit
|
||||
module Generators
|
||||
class TestUnit < NamedBase
|
||||
class Base < Rails::Generators::NamedBase
|
||||
protected
|
||||
def self.base_name
|
||||
'test_unit'
|
||||
|
||||
13
railties/lib/generators/test_unit/plugin/USAGE
Normal file
13
railties/lib/generators/test_unit/plugin/USAGE
Normal file
@@ -0,0 +1,13 @@
|
||||
Description:
|
||||
Stubs out a new plugin at vendor/plugins. Pass the plugin name, either
|
||||
CamelCased or under_scored, as an argument.
|
||||
|
||||
Example:
|
||||
`./script/generate plugin BrowserFilters`
|
||||
|
||||
creates a standard browser_filters plugin:
|
||||
vendor/plugins/browser_filters/README
|
||||
vendor/plugins/browser_filters/init.rb
|
||||
vendor/plugins/browser_filters/install.rb
|
||||
vendor/plugins/browser_filters/lib/browser_filters.rb
|
||||
vendor/plugins/browser_filters/test/browser_filters_test.rb
|
||||
14
railties/lib/generators/test_unit/plugin/plugin_generator.rb
Normal file
14
railties/lib/generators/test_unit/plugin/plugin_generator.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
module TestUnit
|
||||
module Generators
|
||||
class PluginGenerator < Base
|
||||
desc <<DESC
|
||||
Description:
|
||||
Create TestUnit files for plugin generator.
|
||||
DESC
|
||||
|
||||
def create_test_files
|
||||
directory 'test'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,8 @@
|
||||
require 'test_helper'
|
||||
|
||||
class <%= class_name %>Test < ActiveSupport::TestCase
|
||||
# Replace this with your real tests.
|
||||
test "the truth" do
|
||||
assert true
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,3 @@
|
||||
require 'rubygems'
|
||||
require 'active_support'
|
||||
require 'active_support/test_case'
|
||||
Reference in New Issue
Block a user