lotusrb 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -14
  3. data/FEATURES.md +21 -0
  4. data/LICENSE.md +1 -1
  5. data/README.md +8 -7
  6. data/bin/lotus +1 -0
  7. data/lib/lotus.rb +6 -0
  8. data/lib/lotus/action/csrf_protection.rb +1 -1
  9. data/lib/lotus/application.rb +4 -4
  10. data/lib/lotus/application_name.rb +8 -6
  11. data/lib/lotus/cli.rb +75 -66
  12. data/lib/lotus/cli_sub_commands/assets.rb +29 -0
  13. data/lib/lotus/{commands → cli_sub_commands}/db.rb +24 -29
  14. data/lib/lotus/cli_sub_commands/destroy.rb +102 -0
  15. data/lib/lotus/cli_sub_commands/generate.rb +127 -0
  16. data/lib/lotus/commands/assets/precompile.rb +35 -0
  17. data/lib/lotus/commands/console.rb +28 -8
  18. data/lib/lotus/commands/db/abstract.rb +6 -2
  19. data/lib/lotus/commands/db/console.rb +5 -5
  20. data/lib/lotus/commands/generate/abstract.rb +63 -0
  21. data/lib/lotus/commands/generate/action.rb +262 -0
  22. data/lib/lotus/commands/generate/app.rb +116 -0
  23. data/lib/lotus/commands/generate/mailer.rb +118 -0
  24. data/lib/lotus/commands/generate/migration.rb +63 -0
  25. data/lib/lotus/commands/generate/model.rb +96 -0
  26. data/lib/lotus/commands/new/abstract.rb +128 -0
  27. data/lib/lotus/commands/new/app.rb +116 -0
  28. data/lib/lotus/commands/new/container.rb +102 -0
  29. data/lib/lotus/commands/routes.rb +19 -2
  30. data/lib/lotus/commands/server.rb +16 -2
  31. data/lib/lotus/config/framework_configuration.rb +13 -1
  32. data/lib/lotus/configuration.rb +24 -76
  33. data/lib/lotus/container.rb +15 -2
  34. data/lib/lotus/environment.rb +43 -4
  35. data/lib/lotus/frameworks.rb +1 -0
  36. data/lib/lotus/generators/action/action_spec.minitest.tt +1 -1
  37. data/lib/lotus/generators/action/action_spec.rspec.tt +1 -1
  38. data/lib/lotus/generators/action/view_spec.minitest.tt +1 -1
  39. data/lib/lotus/generators/action/view_spec.rspec.tt +1 -1
  40. data/lib/lotus/generators/{slice → app}/.gitkeep.tt +0 -0
  41. data/lib/lotus/generators/{slice → app}/application.rb.tt +61 -23
  42. data/lib/lotus/generators/app/config/initializers/.gitkeep +0 -0
  43. data/lib/lotus/generators/{slice → app}/config/routes.rb.tt +0 -0
  44. data/lib/lotus/generators/app/favicon.ico +0 -0
  45. data/lib/lotus/generators/{slice → app}/templates/application.html.erb.tt +2 -1
  46. data/lib/lotus/generators/app/views/application_layout.rb.tt +7 -0
  47. data/lib/lotus/generators/application/app/.env.development.tt +1 -0
  48. data/lib/lotus/generators/application/app/.env.test.tt +1 -0
  49. data/lib/lotus/generators/application/app/Gemfile.tt +1 -0
  50. data/lib/lotus/generators/application/app/Rakefile.minitest.tt +1 -0
  51. data/lib/lotus/generators/application/app/Rakefile.rspec.tt +1 -0
  52. data/lib/lotus/generators/application/app/config/application.rb.tt +56 -18
  53. data/lib/lotus/generators/application/app/config/initializers/.gitkeep +0 -0
  54. data/lib/lotus/generators/application/app/favicon.ico +0 -0
  55. data/lib/lotus/generators/application/app/gitignore.tt +2 -0
  56. data/lib/lotus/generators/application/app/lotusrc.tt +3 -3
  57. data/lib/lotus/generators/application/app/spec_helper.rb.rspec.tt +5 -1
  58. data/lib/lotus/generators/application/app/templates/application.html.erb.tt +1 -0
  59. data/lib/lotus/generators/application/container/.env.development.tt +1 -0
  60. data/lib/lotus/generators/application/container/.env.test.tt +1 -0
  61. data/lib/lotus/generators/application/container/Gemfile.tt +1 -1
  62. data/lib/lotus/generators/application/container/Rakefile.minitest.tt +1 -0
  63. data/lib/lotus/generators/application/container/Rakefile.rspec.tt +1 -0
  64. data/lib/lotus/generators/application/container/config/initializers/.gitkeep +0 -0
  65. data/lib/lotus/generators/application/container/gitignore.tt +2 -0
  66. data/lib/lotus/generators/application/container/lib/chirp/mailers/.gitkeep +0 -0
  67. data/lib/lotus/generators/application/container/lib/chirp/mailers/templates/.gitkeep +0 -0
  68. data/lib/lotus/generators/application/container/lotusrc.tt +3 -3
  69. data/lib/lotus/generators/application/container/spec_helper.rb.rspec.tt +5 -1
  70. data/lib/lotus/generators/database_config.rb +17 -4
  71. data/lib/lotus/generators/generatable.rb +51 -0
  72. data/lib/lotus/generators/generator.rb +35 -0
  73. data/lib/lotus/generators/test_framework.rb +42 -0
  74. data/lib/lotus/loader.rb +43 -0
  75. data/lib/lotus/lotusrc.rb +50 -49
  76. data/lib/lotus/middleware.rb +28 -10
  77. data/lib/lotus/rake_helper.rb +68 -0
  78. data/lib/lotus/rake_tasks.rb +2 -0
  79. data/lib/lotus/rendering_policy.rb +2 -2
  80. data/lib/lotus/repositories/car_repository.rb +3 -0
  81. data/lib/lotus/repositories/name_repository.rb +3 -0
  82. data/lib/lotus/setup.rb +1 -3
  83. data/lib/lotus/static.rb +77 -0
  84. data/lib/lotus/templates/welcome.html.erb +7 -4
  85. data/lib/lotus/version.rb +1 -1
  86. data/lib/lotus/views/default.rb +2 -1
  87. data/lib/lotus/views/default_template_finder.rb +4 -3
  88. data/lotusrb.gemspec +11 -9
  89. metadata +79 -60
  90. data/lib/lotus/commands/generate.rb +0 -97
  91. data/lib/lotus/commands/new.rb +0 -43
  92. data/lib/lotus/config/assets.rb +0 -81
  93. data/lib/lotus/generators/abstract.rb +0 -31
  94. data/lib/lotus/generators/action.rb +0 -235
  95. data/lib/lotus/generators/app.rb +0 -39
  96. data/lib/lotus/generators/app/.gitkeep +0 -1
  97. data/lib/lotus/generators/application/app.rb +0 -129
  98. data/lib/lotus/generators/application/container.rb +0 -111
  99. data/lib/lotus/generators/mailer.rb +0 -112
  100. data/lib/lotus/generators/migration.rb +0 -58
  101. data/lib/lotus/generators/model.rb +0 -90
  102. data/lib/lotus/generators/slice.rb +0 -94
  103. data/lib/lotus/generators/slice/views/application_layout.rb.tt +0 -7
@@ -0,0 +1,102 @@
1
+ require 'lotus/commands/generate/app'
2
+ require 'lotus/commands/new/abstract'
3
+
4
+ module Lotus
5
+ module Commands
6
+ class New
7
+ class Container < Abstract
8
+
9
+ DEFAULT_APPLICATION_NAME = 'web'.freeze
10
+
11
+ def map_templates
12
+ add_application_templates
13
+ add_empty_directories
14
+ add_test_templates
15
+ add_sql_templates
16
+ add_git_templates
17
+ end
18
+
19
+ def template_options
20
+ {
21
+ app_name: app_name,
22
+ lotus_head: lotus_head?,
23
+ test: test_framework.framework,
24
+ database: database_config.type,
25
+ database_config: database_config.to_hash,
26
+ lotus_model_version: lotus_model_version,
27
+ }
28
+ end
29
+
30
+ def post_process_templates
31
+ init_git
32
+ generate_app
33
+ end
34
+
35
+ private
36
+
37
+ def add_application_templates
38
+ add_mapping('lotusrc.tt', '.lotusrc')
39
+ add_mapping('.env.tt', '.env')
40
+ add_mapping('.env.development.tt', '.env.development')
41
+ add_mapping('.env.test.tt', '.env.test')
42
+ add_mapping('Gemfile.tt', 'Gemfile')
43
+ add_mapping('config.ru.tt', 'config.ru')
44
+ add_mapping('config/environment.rb.tt', 'config/environment.rb')
45
+ add_mapping('lib/app_name.rb.tt', "lib/#{ app_name }.rb")
46
+ add_mapping('lib/config/mapping.rb.tt', 'lib/config/mapping.rb')
47
+ end
48
+
49
+ def add_test_templates
50
+ if test_framework.rspec?
51
+ add_mapping('Rakefile.rspec.tt', 'Rakefile')
52
+ add_mapping('rspec.rspec.tt', '.rspec')
53
+ add_mapping('spec_helper.rb.rspec.tt', 'spec/spec_helper.rb')
54
+ add_mapping('features_helper.rb.rspec.tt', 'spec/features_helper.rb')
55
+ add_mapping('capybara.rb.rspec.tt', 'spec/support/capybara.rb')
56
+ else # minitest (default)
57
+ add_mapping('Rakefile.minitest.tt', 'Rakefile')
58
+ add_mapping('spec_helper.rb.minitest.tt', 'spec/spec_helper.rb')
59
+ add_mapping('features_helper.rb.minitest.tt', 'spec/features_helper.rb')
60
+ end
61
+ end
62
+
63
+ def add_empty_directories
64
+ add_mapping('.gitkeep', 'public/.gitkeep')
65
+ add_mapping('.gitkeep', 'config/initializers/.gitkeep')
66
+ add_mapping('.gitkeep', "lib/#{ app_name }/entities/.gitkeep")
67
+ add_mapping('.gitkeep', "lib/#{ app_name }/repositories/.gitkeep")
68
+ add_mapping('.gitkeep', "lib/#{ app_name }/mailers/.gitkeep")
69
+ add_mapping('.gitkeep', "lib/#{ app_name }/mailers/templates/.gitkeep")
70
+ add_mapping('.gitkeep', "spec/#{ app_name }/entities/.gitkeep")
71
+ add_mapping('.gitkeep', "spec/#{ app_name }/repositories/.gitkeep")
72
+ add_mapping('.gitkeep', "spec/#{ app_name }/mailers/.gitkeep")
73
+ add_mapping('.gitkeep', 'spec/support/.gitkeep')
74
+
75
+ if database_config.sql?
76
+ add_mapping('.gitkeep', 'db/migrations/.gitkeep')
77
+ else
78
+ add_mapping('.gitkeep', 'db/.gitkeep')
79
+ end
80
+ end
81
+
82
+ def generate_app
83
+ Lotus::Commands::Generate::App.new(app_options, app_slice_name).start
84
+ end
85
+
86
+ def app_options
87
+ {
88
+ application_base_url: application_base_url
89
+ }
90
+ end
91
+
92
+ def app_slice_name
93
+ options.fetch(:application_name, DEFAULT_APPLICATION_NAME)
94
+ end
95
+
96
+ def template_source_path
97
+ Pathname.new(::File.dirname(__FILE__)).join('..', '..', 'generators', 'application', 'container').realpath
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -1,17 +1,34 @@
1
1
  module Lotus
2
2
  module Commands
3
+ # Display application/container routes.
4
+ #
5
+ # It is run with:
6
+ #
7
+ # `bundle exec lotus routes`
8
+ #
9
+ # @since 0.1.0
10
+ # @api private
3
11
  class Routes
4
- def initialize(environment)
5
- @environment = environment
12
+ # @param options [Hash] Environment's options
13
+ #
14
+ # @since 0.1.0
15
+ # @see Lotus::Environment#initialize
16
+ def initialize(options)
17
+ @environment = Lotus::Environment.new(options)
6
18
  @environment.require_application_environment
7
19
  end
8
20
 
21
+ # Display to STDOUT application routes
22
+ #
23
+ # @since 0.1.0
9
24
  def start
10
25
  puts app.routes.inspector.to_s
11
26
  end
12
27
 
13
28
  private
14
29
 
30
+ # @since 0.1.0
31
+ # @api private
15
32
  def app
16
33
  if @environment.container?
17
34
  Lotus::Container.new
@@ -19,8 +19,12 @@ module Lotus
19
19
  class Server < ::Rack::Server
20
20
  attr_reader :options
21
21
 
22
- def initialize(env)
23
- @_env = env
22
+ # @param options [Hash] Environment's options
23
+ #
24
+ # @since 0.1.0
25
+ # @see Lotus::Environment#initialize
26
+ def initialize(options)
27
+ @_env = Lotus::Environment.new(options)
24
28
  @options = _extract_options(@_env)
25
29
 
26
30
  if code_reloading?
@@ -31,6 +35,8 @@ module Lotus
31
35
 
32
36
  # Primarily this removes the ::Rack::Chunked middleware
33
37
  # which is the cause of Safari content-length bugs.
38
+ #
39
+ # @since 0.1.0
34
40
  def middleware
35
41
  mw = Hash.new { |e, m| e[m] = [] }
36
42
  mw["deployment"].concat([::Rack::ContentLength, ::Rack::CommonLogger])
@@ -38,6 +44,9 @@ module Lotus
38
44
  mw
39
45
  end
40
46
 
47
+ # Kickstart shotgun preloader if code reloading is supported
48
+ #
49
+ # @since 0.1.0
41
50
  def start
42
51
  if code_reloading?
43
52
  Shotgun.enable_copy_on_write
@@ -48,6 +57,9 @@ module Lotus
48
57
  end
49
58
 
50
59
  private
60
+
61
+ # @since 0.1.0
62
+ # @api private
51
63
  def _extract_options(env)
52
64
  env.to_options.merge(
53
65
  config: env.rackup.to_s,
@@ -57,6 +69,8 @@ module Lotus
57
69
  )
58
70
  end
59
71
 
72
+ # @since 0.1.0
73
+ # @api private
60
74
  def code_reloading?
61
75
  @_env.code_reloading?
62
76
  end
@@ -8,18 +8,30 @@ module Lotus
8
8
  class FrameworkConfiguration < BasicObject
9
9
  # @since 0.2.0
10
10
  # @api private
11
- def initialize
11
+ def initialize(&blk)
12
+ @blocks = [blk || ::Proc.new { }]
12
13
  @settings = []
13
14
  end
14
15
 
15
16
  # @since 0.2.0
16
17
  # @api private
17
18
  def __apply(configuration)
19
+ @blocks.compact.each do |blk|
20
+ configuration.instance_eval(&blk)
21
+ end
22
+
18
23
  @settings.each do |(m, args, blk)|
19
24
  configuration.public_send(m, *args, &blk)
20
25
  end
21
26
  end
22
27
 
28
+ # @since 0.6.0
29
+ # @api private
30
+ def __add(&blk)
31
+ @blocks << blk
32
+ self
33
+ end
34
+
23
35
  # @since 0.2.0
24
36
  # @api private
25
37
  def method_missing(m, *args, &blk)
@@ -3,7 +3,6 @@ require 'lotus/utils/deprecation'
3
3
  require 'lotus/environment'
4
4
  require 'lotus/config/framework_configuration'
5
5
  require 'lotus/config/load_paths'
6
- require 'lotus/config/assets'
7
6
  require 'lotus/config/routes'
8
7
  require 'lotus/config/mapping'
9
8
  require 'lotus/config/sessions'
@@ -389,8 +388,6 @@ module Lotus
389
388
  #
390
389
  # @since 0.1.0
391
390
  #
392
- # @see Lotus::Configuration#serve_assets
393
- #
394
391
  # @example Getting the value
395
392
  # require 'lotus'
396
393
  #
@@ -408,69 +405,22 @@ module Lotus
408
405
  # module Bookshelf
409
406
  # class Application < Lotus::Application
410
407
  # configure do
411
- # serve_assets true
412
- # assets << [
413
- # 'vendor/assets'
414
- # ]
408
+ # assets do
409
+ # sources << [
410
+ # 'vendor/assets'
411
+ # ]
412
+ # end
415
413
  # end
416
414
  # end
417
415
  # end
418
416
  #
419
417
  # Bookshelf::Application.configuration.assets
420
418
  # # => #<Lotus::Config::Assets @root=#<Pathname:/root/path/assets>, @paths=["public"]>
421
- #
422
- def assets
423
- @assets ||= Config::Assets.new(root)
424
- end
425
-
426
- # Configure serving of assets
427
- # Enable static assets (disabled by default).
428
- #
429
- # This is part of a DSL, for this reason when this method is called with
430
- # an argument, it will set the corresponding instance variable. When
431
- # called without, it will return the already set value, or the default.
432
- #
433
- # @since 0.2.0
434
- #
435
- # @overload serve_assets(value)
436
- # Sets the given value.
437
- # @param value [TrueClass, FalseClass]
438
- #
439
- # @overload serve_assets
440
- # Gets the value.
441
- # @return [TrueClass, FalseClass]
442
- #
443
- # @see Lotus::Configuration#assets
444
- #
445
- # @example Getting serve assets configuration by default
446
- # require 'lotus'
447
- #
448
- # module Bookshelf
449
- # class Application < Lotus::Application
450
- # end
451
- # end
452
- #
453
- # Bookshelf::Application.configuration.serve_assets
454
- # # => false
455
- #
456
- # @example Enabling static assets
457
- # require 'lotus'
458
- #
459
- # module Bookshelf
460
- # class Application < Lotus::Application
461
- # configure do
462
- # serve_assets true
463
- # end
464
- # end
465
- # end
466
- #
467
- # Bookshelf::Application.configuration.serve_assets
468
- # # => true
469
- def serve_assets(value = nil)
470
- if value.nil?
471
- @serve_assets || false
419
+ def assets(&blk)
420
+ if @assets
421
+ @assets.__add(&blk)
472
422
  else
473
- @serve_assets = value
423
+ @assets ||= Config::FrameworkConfiguration.new(&blk)
474
424
  end
475
425
  end
476
426
 
@@ -1277,14 +1227,12 @@ module Lotus
1277
1227
  # end
1278
1228
  # end
1279
1229
  #
1280
- # module Controllers
1281
- # module Dashboard
1282
- # include Bookshelf::Controller
1230
+ # module Controllers::Dashboard
1231
+ # class Index
1232
+ # include Bookshelf::Action
1283
1233
  #
1284
- # action 'Index' do
1285
- # def call(params)
1286
- # # ...
1287
- # end
1234
+ # def call(params)
1235
+ # # ...
1288
1236
  # end
1289
1237
  # end
1290
1238
  # end
@@ -1312,9 +1260,9 @@ module Lotus
1312
1260
  # end
1313
1261
  #
1314
1262
  # module DashboardController
1315
- # include Bookshelf::Controller
1263
+ # class Index
1264
+ # include Bookshelf::Action
1316
1265
  #
1317
- # action 'Index' do
1318
1266
  # def call(params)
1319
1267
  # end
1320
1268
  # end
@@ -1345,9 +1293,9 @@ module Lotus
1345
1293
  # end
1346
1294
  #
1347
1295
  # module DashboardController
1348
- # include Bookshelf::Controller
1296
+ # class Index
1297
+ # incude Bookshelf::Action
1349
1298
  #
1350
- # action 'Index' do
1351
1299
  # def call(params)
1352
1300
  # end
1353
1301
  # end
@@ -1530,9 +1478,9 @@ module Lotus
1530
1478
  # end
1531
1479
  #
1532
1480
  # module Controllers::Error
1533
- # include Bookshelf::Controller
1481
+ # class Index
1482
+ # include Bookshelf::Action
1534
1483
  #
1535
- # action 'Index' do
1536
1484
  # def call(params)
1537
1485
  # raise ArgumentError
1538
1486
  # end
@@ -1559,9 +1507,9 @@ module Lotus
1559
1507
  # end
1560
1508
  #
1561
1509
  # module Controllers::Error
1562
- # include Bookshelf::Controller
1510
+ # class Index
1511
+ # include Bookshelf::Action
1563
1512
  #
1564
- # action 'Index' do
1565
1513
  # def call(params)
1566
1514
  # raise ArgumentError
1567
1515
  # end
@@ -1731,9 +1679,9 @@ module Lotus
1731
1679
  # end
1732
1680
  #
1733
1681
  # module Controllers::Error
1734
- # include Bookshelf::Controller
1682
+ # class Index
1683
+ # include Bookshelf::Action
1735
1684
  #
1736
- # action 'Index' do
1737
1685
  # def call(params)
1738
1686
  # Bookshelf::Logger.info "Logging to STDOUT"
1739
1687
  # end
@@ -1,4 +1,5 @@
1
1
  require 'thread'
2
+ require 'rack/builder'
2
3
  require 'lotus/router'
3
4
 
4
5
  module Lotus
@@ -28,12 +29,12 @@ module Lotus
28
29
  def initialize
29
30
  Mutex.new.synchronize do
30
31
  assert_configuration_presence!
31
- @routes = Router.new(&@@configuration)
32
+ prepare_middleware_stack!
32
33
  end
33
34
  end
34
35
 
35
36
  def call(env)
36
- @routes.call(env)
37
+ @builder.call(env)
37
38
  end
38
39
 
39
40
  private
@@ -42,5 +43,17 @@ module Lotus
42
43
  raise ArgumentError.new("#{ self.class } doesn't have any application mounted.")
43
44
  end
44
45
  end
46
+
47
+ def prepare_middleware_stack!
48
+ @builder = ::Rack::Builder.new
49
+ @routes = Router.new(&@@configuration)
50
+
51
+ if Lotus.environment.serve_static_assets?
52
+ require 'lotus/static'
53
+ @builder.use Lotus::Static
54
+ end
55
+
56
+ @builder.run @routes
57
+ end
45
58
  end
46
59
  end
@@ -29,6 +29,18 @@ module Lotus
29
29
  # @api private
30
30
  DEFAULT_ENV = 'development'.freeze
31
31
 
32
+ # Production environment
33
+ #
34
+ # @since 0.6.0
35
+ # @api private
36
+ PRODUCTION_ENV = 'production'.freeze
37
+
38
+ # Rack production environment (aka deployment)
39
+ #
40
+ # @since 0.6.0
41
+ # @api private
42
+ RACK_ENV_DEPLOYMENT = 'deployment'.freeze
43
+
32
44
  # Default `.env` file name
33
45
  #
34
46
  # @since 0.2.0
@@ -111,6 +123,14 @@ module Lotus
111
123
  # @api private
112
124
  APPLICATION_PATH = 'app'.freeze
113
125
 
126
+ # @since 0.4.0
127
+ # @api private
128
+ SERVE_STATIC_ASSETS = 'SERVE_STATIC_ASSETS'.freeze
129
+
130
+ # @since 0.4.0
131
+ # @api private
132
+ SERVE_STATIC_ASSETS_ENABLED = 'true'.freeze
133
+
114
134
  # Initialize a Lotus environment
115
135
  #
116
136
  # It accepts an optional set of configurations from the CLI commands.
@@ -173,7 +193,7 @@ module Lotus
173
193
  # # the one defined in the parent (eg `FOO` is overwritten). All the
174
194
  # # other settings (eg `XYZ`) will be left untouched.
175
195
  def initialize(options = {})
176
- @options = Lotus::Lotusrc.new(root, options).read
196
+ @options = Lotus::Lotusrc.new(root).options
177
197
  @options.merge! Utils::Hash.new(options.clone).symbolize!
178
198
  @mutex = Mutex.new
179
199
  @mutex.synchronize { set_env_vars! }
@@ -188,13 +208,15 @@ module Lotus
188
208
  #
189
209
  # If those are missing it falls back to the defalt one: `"development"`.
190
210
  #
211
+ # Rack environment `"deployment"` is translated to Lotus `"production"`.
212
+ #
191
213
  # @return [String] the current environment
192
214
  #
193
215
  # @since 0.1.0
194
216
  #
195
217
  # @see Lotus::Environment::DEFAULT_ENV
196
218
  def environment
197
- @environment ||= ENV[LOTUS_ENV] || ENV[RACK_ENV] || DEFAULT_ENV
219
+ @environment ||= ENV[LOTUS_ENV] || rack_env || DEFAULT_ENV
198
220
  end
199
221
 
200
222
  # @since 0.3.1
@@ -213,7 +235,7 @@ module Lotus
213
235
  #
214
236
  # @see http://bundler.io/v1.7/groups.html
215
237
  def bundler_groups
216
- [environment]
238
+ [:default, environment]
217
239
  end
218
240
 
219
241
  # Application's root
@@ -385,6 +407,12 @@ module Lotus
385
407
  architecture == CONTAINER
386
408
  end
387
409
 
410
+ # @since 0.6.0
411
+ # @api private
412
+ def serve_static_assets?
413
+ SERVE_STATIC_ASSETS_ENABLED == ENV[SERVE_STATIC_ASSETS]
414
+ end
415
+
388
416
  # @since 0.4.0
389
417
  # @api private
390
418
  def apps_path
@@ -418,8 +446,8 @@ module Lotus
418
446
  # @since 0.1.0
419
447
  # @api private
420
448
  def set_env_vars!
421
- set_lotus_env_vars!
422
449
  set_application_env_vars!
450
+ set_lotus_env_vars!
423
451
  end
424
452
 
425
453
  # @since 0.2.0
@@ -442,5 +470,16 @@ module Lotus
442
470
  def default_host
443
471
  environment == DEFAULT_ENV ? DEFAULT_HOST : LISTEN_ALL_HOST
444
472
  end
473
+
474
+ # @since 0.6.0
475
+ # @api private
476
+ def rack_env
477
+ case ENV[RACK_ENV]
478
+ when RACK_ENV_DEPLOYMENT
479
+ PRODUCTION_ENV
480
+ else
481
+ ENV[RACK_ENV]
482
+ end
483
+ end
445
484
  end
446
485
  end