Class: Nextgen::RailsOptions
- Inherits:
-
Object
- Object
- Nextgen::RailsOptions
- Defined in:
- lib/nextgen/rails_options.rb
Constant Summary collapse
- DATABASES =
%w[ postgresql mysql trilogy sqlite3 oracle sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc ].freeze
- TEST_FRAMEWORKS =
%w[minitest rspec].freeze
- ASSET_PIPELINES =
%w[sprockets propshaft].freeze
- OPTIONAL_FRAMEWORKS =
%w[ action_mailer action_mailbox action_text active_job active_storage action_cable hotwire jbuilder ].freeze
Instance Attribute Summary collapse
-
#asset_pipeline ⇒ Object
Returns the value of attribute asset_pipeline.
-
#css ⇒ Object
Returns the value of attribute css.
-
#database ⇒ Object
Returns the value of attribute database.
-
#javascript ⇒ Object
Returns the value of attribute javascript.
-
#test_framework ⇒ Object
Returns the value of attribute test_framework.
Instance Method Summary collapse
- #action_mailer? ⇒ Boolean
- #active_job? ⇒ Boolean
- #active_record? ⇒ Boolean
- #api! ⇒ Object
- #api? ⇒ Boolean
- #edge! ⇒ Object
- #edge? ⇒ Boolean
- #frontend? ⇒ Boolean
-
#initialize ⇒ RailsOptions
constructor
A new instance of RailsOptions.
- #postgresql? ⇒ Boolean
- #requires_node? ⇒ Boolean
- #rspec? ⇒ Boolean
- #skip_active_record? ⇒ Boolean
- #skip_asset_pipeline? ⇒ Boolean
- #skip_javascript? ⇒ Boolean
- #skip_optional_framework!(framework) ⇒ Object
- #skip_optional_framework?(framework) ⇒ Boolean
- #skip_system_test! ⇒ Object
- #skip_system_test? ⇒ Boolean
- #skip_test? ⇒ Boolean
- #system_testing? ⇒ Boolean
- #test_framework? ⇒ Boolean
-
#to_args ⇒ Object
rubocop:disable Metrics/PerceivedComplexity.
- #vite? ⇒ Boolean
Constructor Details
#initialize ⇒ RailsOptions
Returns a new instance of RailsOptions.
33 34 35 36 37 38 39 |
# File 'lib/nextgen/rails_options.rb', line 33 def initialize @api = false @edge = false @skip_frameworks = [] @skip_system_test = false @test_framework = "minitest" end |
Instance Attribute Details
#asset_pipeline ⇒ Object
Returns the value of attribute asset_pipeline.
31 32 33 |
# File 'lib/nextgen/rails_options.rb', line 31 def asset_pipeline @asset_pipeline end |
#css ⇒ Object
Returns the value of attribute css.
31 32 33 |
# File 'lib/nextgen/rails_options.rb', line 31 def css @css end |
#database ⇒ Object
Returns the value of attribute database.
31 32 33 |
# File 'lib/nextgen/rails_options.rb', line 31 def database @database end |
#javascript ⇒ Object
Returns the value of attribute javascript.
31 32 33 |
# File 'lib/nextgen/rails_options.rb', line 31 def javascript @javascript end |
#test_framework ⇒ Object
Returns the value of attribute test_framework.
31 32 33 |
# File 'lib/nextgen/rails_options.rb', line 31 def test_framework @test_framework end |
Instance Method Details
#action_mailer? ⇒ Boolean
151 152 153 |
# File 'lib/nextgen/rails_options.rb', line 151 def action_mailer? !skip_optional_framework?("action_mailer") end |
#active_job? ⇒ Boolean
155 156 157 |
# File 'lib/nextgen/rails_options.rb', line 155 def active_job? !skip_optional_framework?("active_job") end |
#active_record? ⇒ Boolean
123 124 125 |
# File 'lib/nextgen/rails_options.rb', line 123 def active_record? !skip_active_record? end |
#api! ⇒ Object
100 101 102 103 104 105 |
# File 'lib/nextgen/rails_options.rb', line 100 def api! raise ArgumentError, "Can't specify API mode if css is already specified" if css raise ArgumentError, "Can't specify API mode if javascript is already specified" if javascript @api = true end |
#api? ⇒ Boolean
107 108 109 |
# File 'lib/nextgen/rails_options.rb', line 107 def api? @api end |
#edge! ⇒ Object
92 93 94 |
# File 'lib/nextgen/rails_options.rb', line 92 def edge! @edge = true end |
#edge? ⇒ Boolean
96 97 98 |
# File 'lib/nextgen/rails_options.rb', line 96 def edge? @edge end |
#frontend? ⇒ Boolean
111 112 113 |
# File 'lib/nextgen/rails_options.rb', line 111 def frontend? !api? end |
#postgresql? ⇒ Boolean
78 79 80 |
# File 'lib/nextgen/rails_options.rb', line 78 def postgresql? database == "postgresql" end |
#requires_node? ⇒ Boolean
115 116 117 |
# File 'lib/nextgen/rails_options.rb', line 115 def requires_node? %w[bootstrap bulma postcss sass].include?(css) || %w[webpack esbuild rollup vite].include?(javascript) end |
#rspec? ⇒ Boolean
119 120 121 |
# File 'lib/nextgen/rails_options.rb', line 119 def rspec? @test_framework == "rspec" end |
#skip_active_record? ⇒ Boolean
127 128 129 |
# File 'lib/nextgen/rails_options.rb', line 127 def skip_active_record? defined?(@database) && @database.nil? end |
#skip_asset_pipeline? ⇒ Boolean
131 132 133 |
# File 'lib/nextgen/rails_options.rb', line 131 def skip_asset_pipeline? defined?(@asset_pipeline) && @asset_pipeline.nil? end |
#skip_javascript? ⇒ Boolean
68 69 70 |
# File 'lib/nextgen/rails_options.rb', line 68 def skip_javascript? defined?(@javascript) && @javascript.nil? end |
#skip_optional_framework!(framework) ⇒ Object
159 160 161 162 163 |
# File 'lib/nextgen/rails_options.rb', line 159 def skip_optional_framework!(framework) raise ArgumentError, "Unknown framework: #{framework}" unless OPTIONAL_FRAMEWORKS.include?(framework) skip_frameworks << framework end |
#skip_optional_framework?(framework) ⇒ Boolean
165 166 167 168 169 |
# File 'lib/nextgen/rails_options.rb', line 165 def skip_optional_framework?(framework) raise ArgumentError, "Unknown framework: #{framework}" unless OPTIONAL_FRAMEWORKS.include?(framework) skip_frameworks.include?(framework) end |
#skip_system_test! ⇒ Object
135 136 137 |
# File 'lib/nextgen/rails_options.rb', line 135 def skip_system_test! @skip_system_test = true end |
#skip_system_test? ⇒ Boolean
139 140 141 |
# File 'lib/nextgen/rails_options.rb', line 139 def skip_system_test? @skip_system_test end |
#skip_test? ⇒ Boolean
143 144 145 |
# File 'lib/nextgen/rails_options.rb', line 143 def skip_test? defined?(@test_framework) && [nil, "rspec"].include?(@test_framework) end |
#system_testing? ⇒ Boolean
147 148 149 |
# File 'lib/nextgen/rails_options.rb', line 147 def system_testing? !(api? || test_framework.nil? || skip_system_test?) end |
#test_framework? ⇒ Boolean
88 89 90 |
# File 'lib/nextgen/rails_options.rb', line 88 def test_framework? !!@test_framework end |
#to_args ⇒ Object
rubocop:disable Metrics/PerceivedComplexity
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/nextgen/rails_options.rb', line 171 def to_args # rubocop:disable Metrics/PerceivedComplexity [].tap do |args| args << "--edge" if edge? args << "--api" if api? args << "--skip-active-record" if skip_active_record? args << "--skip-asset-pipeline" if skip_asset_pipeline? args << "--skip-javascript" if skip_javascript? args << "--skip-test" if skip_test? args << "--skip-system-test" if skip_system_test? args << "--asset-pipeline=#{asset_pipeline}" if asset_pipeline args << "--database=#{database}" if database args << "--css=#{css}" if css args << "--javascript=#{javascript}" if javascript args.push(*skip_frameworks.map { "--skip-#{_1.tr("_", "-")}" }) end end |
#vite? ⇒ Boolean
64 65 66 |
# File 'lib/nextgen/rails_options.rb', line 64 def vite? @javascript == "vite" end |