Class: Versionist::NewApiVersionGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Versionist::NewApiVersionGenerator
- Includes:
- InflectorFixes, RspecHelper
- Defined in:
- lib/generators/versionist/new_api_version/new_api_version_generator.rb
Instance Method Summary collapse
- #add_controller_base ⇒ Object
-
#add_controller_base_tests ⇒ Object
due to the inflector quirks we can’t use hook_for :test_framework.
- #add_documentation_base ⇒ Object
- #add_helpers_dir ⇒ Object
- #add_helpers_test_dir ⇒ Object
- #add_presenter_test ⇒ Object
- #add_presenters_base ⇒ Object
- #add_routes ⇒ Object
- #verify_options ⇒ Object
Methods included from RspecHelper
Methods included from InflectorFixes
#module_name_for_path, #module_name_for_route
Instance Method Details
#add_controller_base ⇒ Object
55 56 57 58 59 60 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 55 def add_controller_base in_root do empty_directory "app/controllers/#{module_name_for_path(module_name)}" template 'base_controller.rb', File.join("app", "controllers", "#{module_name_for_path(module_name)}", "base_controller.rb") end end |
#add_controller_base_tests ⇒ Object
due to the inflector quirks we can’t use hook_for :test_framework
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 63 def add_controller_base_tests in_root do case Versionist.configuration.configured_test_framework when :test_unit empty_directory "test/#{Versionist.test_path}/#{module_name_for_path(module_name)}" empty_directory "test/integration/#{module_name_for_path(module_name)}" if Versionist.older_than_rails_5? template 'base_controller_integration_test.rb', File.join("test", "integration", "#{module_name_for_path(module_name)}", "base_controller_test.rb") template 'base_controller_functional_test.rb', File.join("test", "#{Versionist.test_path}", "#{module_name_for_path(module_name)}", "base_controller_test.rb") else template 'base_controller_functional_test_rails_5.rb', File.join("test", "#{Versionist.test_path}", "#{module_name_for_path(module_name)}", "base_controller_test_rails_5.rb") end when :rspec @rspec_require_file = rspec_helper_filename empty_directory "spec/controllers/#{module_name_for_path(module_name)}" template 'base_controller_spec.rb', File.join("spec", "controllers", "#{module_name_for_path(module_name)}", "base_controller_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file } empty_directory "spec/requests/#{module_name_for_path(module_name)}" template 'base_controller_spec.rb', File.join("spec", "requests", "#{module_name_for_path(module_name)}", "base_controller_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file } else say "Unsupported test_framework: #{Versionist.configuration.configured_test_framework}" end end end |
#add_documentation_base ⇒ Object
135 136 137 138 139 140 141 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 135 def add_documentation_base in_root do empty_directory "public/docs/#{version}" template 'docs_index.rb', File.join("public", "docs", "#{version}", "index.html") template 'docs_style.rb', File.join("public", "docs", "#{version}", "style.css") end end |
#add_helpers_dir ⇒ Object
116 117 118 119 120 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 116 def add_helpers_dir in_root do empty_directory "app/helpers/#{module_name_for_path(module_name)}" end end |
#add_helpers_test_dir ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 122 def add_helpers_test_dir in_root do case Versionist.configuration.configured_test_framework when :test_unit empty_directory "test/helpers/#{module_name_for_path(module_name)}" when :rspec empty_directory "spec/helpers/#{module_name_for_path(module_name)}" else say "Unsupported test_framework: #{Versionist.configuration.configured_test_framework}" end end end |
#add_presenter_test ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 95 def add_presenter_test in_root do case Versionist.configuration.configured_test_framework when :test_unit empty_directory "test/presenters/#{module_name_for_path(module_name)}" if Versionist.older_than_rails_5? template 'base_presenter_test.rb', File.join("test", "presenters", "#{module_name_for_path(module_name)}", "base_presenter_test.rb") else template 'base_presenter_test_rails_5.rb', File.join("test", "presenters", "#{module_name_for_path(module_name)}", "base_presenter_test_rails_5.rb") end when :rspec @rspec_require_file = rspec_helper_filename empty_directory "spec/presenters/#{module_name_for_path(module_name)}" template 'base_presenter_spec.rb', File.join("spec", "presenters", "#{module_name_for_path(module_name)}", "base_presenter_spec.rb"), :assigns => { :rspec_require_file => @rspec_require_file } else say "Unsupported test_framework: #{Versionist.configuration.configured_test_framework}" end end end |
#add_presenters_base ⇒ Object
88 89 90 91 92 93 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 88 def add_presenters_base in_root do empty_directory "app/presenters/#{module_name_for_path(module_name)}" template 'base_presenter.rb', File.join("app", "presenters", "#{module_name_for_path(module_name)}", "base_presenter.rb") end end |
#add_routes ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 31 def add_routes in_root do api_version_block = /api_version.*:module\s*(=>|:)\s*("|')#{module_name_for_route(module_name)}("|')/ matching_version_blocks = File.readlines("config/routes.rb").grep(api_version_block) raise "API version already exists in config/routes.rb" if !matching_version_blocks.empty? route_string = "api_version(:module => \"#{module_name_for_route(module_name)}\"" ['header', 'parameter', 'path'].each do |versioning_strategy| if .has_key?(versioning_strategy) [versioning_strategy].symbolize_keys! route_string << ", :#{versioning_strategy} => {#{[versioning_strategy].to_s.gsub(/[\{\}]/, '').gsub('=>', ' => ')}}" end end if .has_key?('defaults') ['defaults'].symbolize_keys! route_string << ", :defaults => {#{['defaults'].to_s.gsub(/[\{\}]/, '').gsub('=>', ' => ')}}" end if .has_key?('default') route_string << ", :default => true" end route_string << ") do\n end" route route_string end end |
#verify_options ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/generators/versionist/new_api_version/new_api_version_generator.rb', line 18 def raise "Must specify at least one versioning strategy option" if !['header', 'parameter', 'path'].any? {|strategy| .has_key?(strategy)} if .has_key?("header") raise "Must specify name and value for header versioning strategy" if !["header"].has_key?("name") || !["header"].has_key?("value") end if .has_key?("parameter") raise "Must specify name and value for parameter versioning strategy" if !["parameter"].has_key?("name") || !["parameter"].has_key?("value") end if .has_key?("path") raise "Must specify value for path versioning strategy" if !["path"].has_key?("value") end end |