Class: Rails::Generators::NamedBase
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
ActiveRecord::Generators::Base, ActiveRecord::Generators::MigrationGenerator, ActiveRecord::Generators::ModelGenerator, Erb::Generators::Base, Erb::Generators::ControllerGenerator, Erb::Generators::MailerGenerator, Erb::Generators::ScaffoldGenerator, BenchmarkGenerator, ChannelGenerator, Rails::Generators::ControllerGenerator, Rails::Generators::GeneratorGenerator, Rails::Generators::HelperGenerator, Rails::Generators::IntegrationTestGenerator, Rails::Generators::JobGenerator, MailboxGenerator, MailerGenerator, Rails::Generators::MigrationGenerator, Rails::Generators::ModelGenerator, Rails::Generators::ResourceGenerator, Rails::Generators::ResourceRouteGenerator, Rails::Generators::ScaffoldControllerGenerator, Rails::Generators::ScaffoldGenerator, Rails::Generators::SystemTestGenerator, Rails::Generators::TaskGenerator, TestUnit::Generators::Base, TestUnit::Generators::ChannelGenerator, TestUnit::Generators::ControllerGenerator, TestUnit::Generators::GeneratorGenerator, TestUnit::Generators::HelperGenerator, TestUnit::Generators::IntegrationGenerator, TestUnit::Generators::JobGenerator, TestUnit::Generators::MailboxGenerator, TestUnit::Generators::MailerGenerator, TestUnit::Generators::ModelGenerator, TestUnit::Generators::PluginGenerator, TestUnit::Generators::ScaffoldGenerator, TestUnit::Generators::SystemGenerator
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Base ,
Thor::Group
|
|
Instance Chain:
|
|
Inherits: |
Rails::Generators::Base
|
Defined in: | railties/lib/rails/generators/named_base.rb |
Class Method Summary
-
.check_class_collision(options = {})
private
Add a class collisions name to be checked on class initialization.
Base
- Inherited
.base_root | Returns the base root for a common set of generators. |
.default_source_root | Returns the default source root for a given generator. |
.desc | Tries to get the description from a USAGE file one folder above the source root otherwise uses a default description. |
.hide! | Convenience method to hide this generator from the available ones when running rails generator command. |
.hook_for | Invoke a generator based on the value supplied by the user to the given option named “name”. |
.namespace | Convenience method to get the namespace from the class name. |
.remove_hook_for | Remove a previously added hook. |
.source_root | Returns the source root for this generator using default_source_root as default. |
.add_shebang_option! | Small macro to add ruby as an option to the generator with proper default value plus an instance helper method called shebang. |
.banner | Use Rails default banner. |
.base_name | Sets the base_name taking into account the current class namespace. |
.default_aliases_for_option | Returns default aliases for the option name given doing a lookup in aliases. |
.default_for_option | Returns default for the option name given doing a lookup in config. |
.default_generator_root, | |
.default_value_for_option | Returns the default value for the option name given doing a lookup in options. |
.generator_name | Removes the namespaces and get the generator name. |
.usage_path |
Instance Attribute Summary
- #inside_template readonly private
- #inside_template? ⇒ Boolean readonly private
- #mountable_engine? ⇒ Boolean readonly private
- #pluralize_table_names? ⇒ Boolean readonly private
- #uncountable? ⇒ Boolean readonly private
Base
- Inherited
Instance Method Summary
-
#application_name
private
Tries to retrieve the application name or simply return application.
- #attributes_names private
- #class_name private
- #class_path private
- #edit_helper private
- #file_path private
- #fixture_file_name private
- #human_name private
- #i18n_scope private
- #index_helper(type: nil) private
- #model_resource_name(base_name = singular_table_name, prefix: "") private
- #namespaced_class_path private
- #new_helper(type: :url) private
- #plural_file_name private
- #plural_name private
- #plural_route_name private
- #plural_table_name private
- #redirect_resource_name private
- #regular_class_path private
- #route_url private
- #show_helper(arg = "@#{singular_table_name}", type: :url) private
-
#singular_name
private
FIXME: We are avoiding to use alias because a bug on thor that make this method public and add it to the task list.
- #singular_route_name private
- #singular_table_name private
- #table_name private
- #url_helper_prefix private
Base
- Inherited
#extract_last_module | Takes in an array of nested modules and extracts the last module. |
#indent, | |
#module_namespacing | Wrap block with namespace of current application if namespace exists and is not skipped. |
#namespace, #namespaced_path, #wrap_with_namespace |
Actions
- Included
#add_source | Add the given source to |
#application | Alias for Actions#environment. |
#environment | Adds configuration code to a Rails runtime environment. |
#gem | Adds a |
#gem_group | Wraps gem entries inside a group. |
#generate | Runs another generator. |
#git | Runs one or more git commands. |
#github, | |
#initializer | Creates an initializer file in |
#lib | Creates a file in |
#rails_command | Runs the specified Rails command. |
#rake | Runs the specified Rake task. |
#rakefile | Creates a Rake tasks file in |
#readme | Reads the given file at the source root and prints it in the console. |
#route | Make an entry in Rails routing file |
#vendor | Creates a file in |
#execute_command | Runs the supplied command using either “rake …” or “rails …” based on the executor parameter provided. |
#indentation | Indent the |
#log | Define log for backwards compatibility. |
#optimize_indentation | Returns optimized string with indentation. |
#quote | Always returns value in double quotes. |
#with_indentation | Manage |
Class Method Details
.check_class_collision(options = {}) (private)
Add a class collisions name to be checked on class initialization. You can supply a hash with a :prefix
or :suffix
to be tested.
Examples
check_class_collision suffix: "Decorator"
If the generator is invoked with class name Admin, it will check for the presence of “AdminDecorator”.
# File 'railties/lib/rails/generators/named_base.rb', line 214
def self.check_class_collision( = {}) # :doc: define_method :check_class_collision do name = if respond_to?(:controller_class_name, true) # for ResourceHelpers controller_class_name else class_name end class_collisions "#{ [:prefix]}#{name}#{ [:suffix]}" end end
Instance Attribute Details
#inside_template (readonly, private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 43
def inside_template # :doc: @inside_template = true yield ensure @inside_template = false end
#inside_template? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'railties/lib/rails/generators/named_base.rb', line 50
def inside_template? # :doc: @inside_template end
#mountable_engine? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'railties/lib/rails/generators/named_base.rb', line 200
def mountable_engine? # :doc: defined?(ENGINE_ROOT) && namespaced? end
#pluralize_table_names? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'railties/lib/rails/generators/named_base.rb', line 196
def pluralize_table_names? # :doc: !defined?(ActiveRecord::Base) || ActiveRecord::Base.pluralize_table_names end
#uncountable? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'railties/lib/rails/generators/named_base.rb', line 93
def uncountable? # :doc: singular_name == plural_name end
Instance Method Details
#application_name (private)
Tries to retrieve the application name or simply return application.
# File 'railties/lib/rails/generators/named_base.rb', line 138
def application_name # :doc: if defined?(Rails) && Rails.application Rails.application.class.name.split("::").first.underscore else "application" end end
#attributes_names (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 188
def attributes_names # :doc: @attributes_names ||= attributes.each_with_object([]) do |a, names| names << a.column_name names << "password_confirmation" if a.password_digest? names << "#{a.name}_type" if a.polymorphic? end end
#class_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 70
def class_name # :doc: (class_path + [file_name]).map!(&:camelize).join("::") end
#class_path (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 58
def class_path # :doc: inside_template? || !namespaced? ? regular_class_path : namespaced_class_path end
#edit_helper (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 105
def edit_helper(...) # :doc: "edit_#{show_helper(...)}" end
#file_path (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 54
def file_path # :doc: @file_path ||= (class_path + [file_name]).join("/") end
#fixture_file_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 125
def fixture_file_name # :doc: @fixture_file_name ||= (pluralize_table_names? ? plural_file_name : file_name) end
#human_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 74
def human_name # :doc: @human_name ||= singular_name.humanize end
#i18n_scope (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 82
def i18n_scope # :doc: @i18n_scope ||= file_path.tr("/", ".") end
#index_helper(type: nil) (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 97
def index_helper(type: nil) # :doc: [plural_route_name, ("index" if uncountable?), type].compact.join("_") end
#model_resource_name(base_name = singular_table_name, prefix: "") (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 150
def model_resource_name(base_name = singular_table_name, prefix: "") # :doc: resource_name = "#{prefix}#{base_name}" if [:model_name] "[#{controller_class_path.map { |name| ":" + name }.join(", ")}, #{resource_name}]" else resource_name end end
#namespaced_class_path (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 66
def namespaced_class_path # :doc: @namespaced_class_path ||= namespace_dirs + @class_path end
#new_helper(type: :url) (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 109
def new_helper(type: :url) # :doc: "new_#{singular_route_name}_#{type}" end
#plural_file_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 121
def plural_file_name # :doc: @plural_file_name ||= file_name.pluralize end
#plural_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 78
def plural_name # :doc: @plural_name ||= singular_name.pluralize end
#plural_route_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 167
def plural_route_name # :doc: if [:model_name] "#{controller_class_path.join('_')}_#{plural_table_name}" else plural_table_name end end
#plural_table_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 117
def plural_table_name # :doc: @plural_table_name ||= (pluralize_table_names? ? table_name : table_name.pluralize) end
#redirect_resource_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 146
def redirect_resource_name # :doc: model_resource_name(prefix: "@") end
#regular_class_path (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 62
def regular_class_path # :doc: @class_path end
#route_url (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 129
def route_url # :doc: @route_url ||= controller_class_path.collect { |dname| "/" + dname }.join + "/" + plural_file_name end
#show_helper(arg = "@#{singular_table_name}", type: :url) (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 101
def show_helper(arg = "@#{singular_table_name}", type: :url) # :doc: "#{singular_route_name}_#{type}(#{arg})" end
#singular_name (private)
FIXME: We are avoiding to use alias because a bug on thor that make this method public and add it to the task list.
# File 'railties/lib/rails/generators/named_base.rb', line 39
def singular_name # :doc: file_name end
#singular_route_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 159
def singular_route_name # :doc: if [:model_name] "#{controller_class_path.join('_')}_#{singular_table_name}" else singular_table_name end end
#singular_table_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 113
def singular_table_name # :doc: @singular_table_name ||= (pluralize_table_names? ? table_name.singularize : table_name) end
#table_name (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 86
def table_name # :doc: @table_name ||= begin base = pluralize_table_names? ? plural_name : singular_name (class_path + [base]).join("_") end end
#url_helper_prefix (private)
[ GitHub ]# File 'railties/lib/rails/generators/named_base.rb', line 133
def url_helper_prefix # :doc: @url_helper_prefix ||= (class_path + [file_name]).join("_") end