The plugin builder allows you to override elements of the plugin generator without being forced to reverse the operations of the default generator.
This allows you to override entire operations, like the creation of the Gemfile, README, or JavaScript files, without needing to know exactly what those operations do so you can create another template action.
Methods
- A
- B
- C
- G
- L
- R
- S
- T
- V
Constants
DUMMY_IGNORE_OPTIONS | = | %i[dev edge master template] |
Instance Public methods
app() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 20 def app if mountable? if api? directory "app", exclude_pattern: %r{app/(views|helpers)} else directory "app" empty_directory_with_keep_file "app/assets/images/#{namespaced_name}" end empty_directory_with_keep_file "app/models/concerns" empty_directory_with_keep_file "app/controllers/concerns" remove_dir "app/mailers" if options[:skip_action_mailer] remove_dir "app/jobs" if options[:skip_active_job] elsif full? empty_directory_with_keep_file "app/models" empty_directory_with_keep_file "app/controllers" empty_directory_with_keep_file "app/models/concerns" empty_directory_with_keep_file "app/controllers/concerns" empty_directory_with_keep_file "app/mailers" unless options[:skip_action_mailer] empty_directory_with_keep_file "app/jobs" unless options[:skip_active_job] unless api? empty_directory_with_keep_file "app/assets/images/#{namespaced_name}" empty_directory_with_keep_file "app/helpers" empty_directory_with_keep_file "app/views" end end end
assets_manifest() Link
bin(force = false) Link
config() Link
gemfile() Link
gemfile_entry() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 185 def gemfile_entry return unless inside_application? gemfile_in_app_path = File.join(rails_app_path, "Gemfile") if File.exist? gemfile_in_app_path entry = "\ngem '#{name}', path: '#{relative_path}'" append_file gemfile_in_app_path, entry end end
gemspec() Link
generate_test_dummy(force = false) Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 115 def generate_test_dummy(force = false) opts = options.transform_keys(&:to_sym).except(*DUMMY_IGNORE_OPTIONS) opts[:force] = force opts[:skip_bundle] = true opts[:skip_git] = true opts[:skip_hotwire] = true opts[:dummy_app] = true invoke Rails::Generators::AppGenerator, [ File.expand_path(dummy_path, destination_root) ], opts end
gitignore() Link
lib() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 78 def lib template "lib/%namespaced_name%.rb" template "lib/tasks/%namespaced_name%_tasks.rake" template "lib/%namespaced_name%/version.rb" if engine? template "lib/%namespaced_name%/engine.rb" else template "lib/%namespaced_name%/railtie.rb" end end
license() Link
rakefile() Link
readme() Link
stylesheets() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 168 def stylesheets if mountable? copy_file "rails/stylesheets.css", "app/assets/stylesheets/#{namespaced_name}/application.css" elsif full? empty_directory_with_keep_file "app/assets/stylesheets/#{namespaced_name}" end end
test() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 94 def test template "test/test_helper.rb" template "test/%namespaced_name%_test.rb" if engine? empty_directory_with_keep_file "test/fixtures/files" empty_directory_with_keep_file "test/controllers" empty_directory_with_keep_file "test/mailers" empty_directory_with_keep_file "test/models" empty_directory_with_keep_file "test/integration" unless api? empty_directory_with_keep_file "test/helpers" end template "test/integration/navigation_test.rb" end end
test_dummy_clean() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 151 def test_dummy_clean inside dummy_path do remove_file ".ruby-version" remove_file "db/seeds.rb" remove_file "Gemfile" remove_file "lib/tasks" remove_file "public/robots.txt" remove_file "README.md" remove_file "test" remove_file "vendor" end end
test_dummy_config() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 127 def test_dummy_config template "rails/boot.rb", "#{dummy_path}/config/boot.rb", force: true insert_into_file "#{dummy_path}/config/application.rb", <<~RUBY, after: /^Bundler\.require.+\n/ require #{namespaced_name.inspect} RUBY if mountable? template "rails/routes.rb", "#{dummy_path}/config/routes.rb", force: true end if engine? && !api? insert_into_file "#{dummy_path}/config/application.rb", indent(<<~RUBY, 4), after: /^\s*config\.load_defaults.*\n/ # For compatibility with applications that use this config config.action_controller.include_all_helpers = false RUBY end end
test_dummy_sprocket_assets() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 146 def test_dummy_sprocket_assets template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true template "rails/dummy_manifest.js", "#{dummy_path}/app/assets/config/manifest.js", force: true end
version_control() Link
# File railties/lib/rails/generators/rails/plugin/plugin_generator.rb, line 69 def version_control if !options[:skip_git] && !options[:pretend] run "git init", capture: options[:quiet], abort_on_failure: false if user_default_branch.strip.empty? `git symbolic-ref HEAD refs/heads/main` end end end