class Rails::Generators::PluginNewGenerator
def self.banner
def self.banner "rails plugin new #{self.arguments.map(&:usage).join(' ')} [options]" end
def app_templates_dir
def app_templates_dir "../../app/templates" end
def application_definition
def application_definition @application_definition ||= begin dummy_application_path = File.expand_path("#{dummy_path}/config/application.rb", destination_root) unless options[:pretend] || !File.exists?(dummy_application_path) contents = File.read(dummy_application_path) contents[(contents.index(/module ([\w]+)\n(.*)class Application/m))..-1] end end end
def camelized
def camelized @camelized ||= name.gsub(/\W/, '_').squeeze('_').camelize end
def create_app_files
def create_app_files build(:app) end
def create_config_files
def create_config_files build(:config) end
def create_dummy_app(path = nil)
def create_dummy_app(path = nil) dummy_path(path) if path say_status :vendor_app, dummy_path mute do build(:generate_test_dummy) store_application_definition! build(:test_dummy_config) build(:test_dummy_clean) # ensure that script/rails has proper dummy_path build(:script, true) end end
def create_images_directory
def create_images_directory build(:images) end
def create_javascript_files
def create_javascript_files build(:javascripts) end
def create_lib_files
def create_lib_files build(:lib) end
def create_public_stylesheets_files
def create_public_stylesheets_files build(:stylesheets) end
def create_root_files
def create_root_files build(:readme) build(:rakefile) build(:gemspec) unless options[:skip_gemspec] build(:license) build(:gitignore) unless options[:skip_git] build(:gemfile) unless options[:skip_gemfile] end
def create_script_files
def create_script_files build(:script) end
def create_test_dummy_files
def create_test_dummy_files return unless with_dummy_app? create_dummy_app end
def create_test_files
def create_test_files build(:test) unless options[:skip_test_unit] end
def dummy_path(path = nil)
def dummy_path(path = nil) @dummy_path = path if path @dummy_path || options[:dummy_path] end
def finish_template
def finish_template build(:leftovers) end
def full?
def full? options[:full] || options[:mountable] end
def get_builder_class
def get_builder_class defined?(::PluginBuilder) ? ::PluginBuilder : Rails::PluginBuilder end
def initialize(*args)
def initialize(*args) raise Error, "Options should be given after the plugin name. For details run: rails plugin --help" if args[0].blank? @dummy_path = nil super end
def mountable?
def mountable? options[:mountable] end
def mute(&block)
def mute(&block) shell.mute(&block) end
def name
def name @name ||= begin # same as ActiveSupport::Inflector#underscore except not replacing '-' underscored = original_name.dup underscored.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2') underscored.gsub!(/([a-z\d])([A-Z])/,'\1_\2') underscored.downcase! underscored end end
def original_name
def original_name @original_name ||= File.basename(destination_root) end
def rakefile_test_tasks
def rakefile_test_tasks <<-RUBY e 'rake/testtask' TestTask.new(:test) do |t| bs << 'lib' bs << 'test' ttern = 'test/**/*_test.rb' rbose = false RUBY end
def valid_const?
def valid_const? if camelized =~ /^\d/ raise Error, "Invalid plugin name #{original_name}. Please give a name which does not start with numbers." elsif RESERVED_NAMES.include?(name) raise Error, "Invalid plugin name #{original_name}. Please give a name which does not match one of the reserved rails words." elsif Object.const_defined?(camelized) raise Error, "Invalid plugin name #{original_name}, constant #{camelized} is already in use. Please choose another plugin name." end end
def with_dummy_app?
def with_dummy_app? options[:skip_test_unit].blank? || options[:dummy_path] != 'test/dummy' end