lotusrb 0.4.0 → 0.4.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 52e1d51949b1c0cdaa5dfe36c2758dc9e82624b9
4
- data.tar.gz: 8a743bcca2c6ae96f85179b38383e0dfe99b2af1
3
+ metadata.gz: 935451417df1119d39a85bc9f5a4ab0b254f5f4a
4
+ data.tar.gz: 35a84423b6d404016700fb068965dcc1649742db
5
5
  SHA512:
6
- metadata.gz: dc6bf38f66898013a9192239faface94696b5032996c02f77866eb174bfe4242a7ac64f8642d6a67a228947562dfb59bf6cbd57f31919cd5b2e33ddcc2a5fb61
7
- data.tar.gz: 25ef374ff36f82fcfc98aa74c0b5e5d5323ca1403d35686370a3b792be7054a990012702bae2b2d3910d64047341a1ef6c62216f43188305e4aae6a25ee8cfe5
6
+ metadata.gz: 804e4de1c16d7840bcf859608af64eeb68687ccc0dc64f10de35b06bf8660d9c74e6bdaebca9636ec0ecadafc928252a5d989a89548b20e5ff1cacb66da325b0
7
+ data.tar.gz: e2ba8789564318ad4d99d489eeed5d42b8484cf21a7124140f6bcfa57d65442ce401217e6ae68a27a425bf0db7c20d2d914c53869fad85b28803e62f0e639035
data/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # Lotus
2
2
  A complete web framework for Ruby
3
3
 
4
+ ## v0.4.1 - 2015-07-10
5
+ ### Added
6
+ - [Trung Lê] Alias `--database` as `--db` for `lotus new`
7
+
8
+ ### Fixed
9
+ - [Alfonso Uceda Pompa] Ensure to load correctly apps in `lotus console`
10
+ - [Alfonso Uceda Pompa] Ensure to not duplicate prefix for Container mounted apps (eg `/admin/admin/dashboard`)
11
+ - [Alfonso Uceda Pompa] Ensure generator for application arch to generate session secret
12
+ - [Alfonso Uceda Pompa & Trung Lê & Hiếu Nguyễn] Exit unsuccessfully when `lotus generate model` doesn't receive a mandatory name for model
13
+ - [Miguel Molina] Exit unsuccessfully when `lotus new --database` receives an unknown value
14
+ - [Luca Guidi] Ensure to prepend sessions middleware, so other Rack components can have access to HTTP session
15
+
4
16
  ## v0.4.0 - 2015-06-23
5
17
  ### Added
6
18
  - [Luca Guidi] Database migrations and new CLI commands for database operations
data/FEATURES.md CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
  ## Features
5
5
 
6
+ ## v0.4.1 - 2015-07-10
7
+
6
8
  ## v0.4.0 - 2015-06-23
7
9
 
8
10
  - Application architecture
data/lib/lotus/cli.rb CHANGED
@@ -61,12 +61,12 @@ module Lotus
61
61
  end
62
62
 
63
63
  desc 'new', 'generates a new application'
64
- method_option :database, aliases: '-d', desc: 'application database', type: :string, default: 'filesystem'
65
- method_option :architecture, aliases: ['-a', '--arch'], desc: 'application architecture', type: :string, default: 'container'
64
+ method_option :database, aliases: ['-d', '--db'], desc: 'application database (filesystem/memory/postgresql/sqlite3/mysql)', type: :string, default: 'filesystem'
65
+ method_option :architecture, aliases: ['-a', '--arch'], desc: 'application architecture (container/app)', type: :string, default: 'container'
66
66
  method_option :application, desc: 'application name', type: :string, default: 'web'
67
67
  method_option :application_base_url, desc: 'application base url', type: :string, default: '/'
68
68
  method_option :path, desc: 'path', type: :string
69
- method_option :test, desc: 'application test framework (rspec/minitest)', type: :string, default: 'minitest'
69
+ method_option :test, desc: 'application test framework (rspec/minitest)', type: :string, default: 'minitest'
70
70
  method_option :lotus_head, desc: 'use Lotus HEAD', type: :boolean, default: false
71
71
  method_option :help, aliases: '-h', desc: 'displays the usage method'
72
72
 
@@ -79,7 +79,7 @@ module Lotus
79
79
  end
80
80
  end
81
81
 
82
- desc 'generate', 'generates action, model or migration'
82
+ desc 'generate', 'generates app, action, model or migration'
83
83
  method_option :application_base_url, desc: 'application base url', type: :string
84
84
  method_option :path, desc: 'applications path', type: :string
85
85
  method_option :url, desc: 'relative URL for action', type: :string
@@ -28,8 +28,8 @@ module Lotus
28
28
 
29
29
  # Add convenience methods to the main:Object binding
30
30
  TOPLEVEL_BINDING.eval('self').send(:include, Methods)
31
- Lotus::Application.preload_applications!
32
31
 
32
+ load_application
33
33
  engine.start
34
34
  end
35
35
 
@@ -57,6 +57,14 @@ module Lotus
57
57
  }
58
58
  )
59
59
  end
60
+
61
+ def load_application
62
+ if @environment.container?
63
+ Lotus::Container.new
64
+ else
65
+ Lotus::Application.preload_applications!
66
+ end
67
+ end
60
68
  end
61
69
  end
62
70
  end
@@ -2,11 +2,22 @@ module Lotus
2
2
  module Commands
3
3
  class Routes
4
4
  def initialize(environment)
5
- environment.require_application_environment
5
+ @environment = environment
6
+ @environment.require_application_environment
6
7
  end
7
8
 
8
9
  def start
9
- puts Lotus::Container.new.routes.inspector.to_s
10
+ puts app.routes.inspector.to_s
11
+ end
12
+
13
+ private
14
+
15
+ def app
16
+ if @environment.container?
17
+ Lotus::Container.new
18
+ else
19
+ Lotus::Application.applications.first.new
20
+ end
10
21
  end
11
22
  end
12
23
  end
@@ -1,6 +1,7 @@
1
1
  require 'thread'
2
2
  require 'pathname'
3
3
  require 'dotenv'
4
+ require 'lotus/utils'
4
5
  require 'lotus/utils/hash'
5
6
  require 'lotus/lotusrc'
6
7
 
@@ -360,7 +361,13 @@ module Lotus
360
361
  # @see Lotus::Commands::Server
361
362
  # @see Lotus::Environment::CODE_RELOADING
362
363
  def code_reloading?
363
- @options.fetch(:code_reloading) { !!CODE_RELOADING[environment] }
364
+ # JRuby doesn't implement fork that's why shotgun cannot be used.
365
+ if Utils.jruby?
366
+ puts "JRuby doesn't support code reloading."
367
+ false
368
+ else
369
+ @options.fetch(:code_reloading) { !!CODE_RELOADING[environment] }
370
+ end
364
371
  end
365
372
 
366
373
  # @since 0.4.0
@@ -10,6 +10,14 @@ module Lotus
10
10
  # @api private
11
11
  ACTION_SEPARATOR = /\/|\#/
12
12
 
13
+ # @since 0.4.1
14
+ # @api private
15
+ ROUTE_ENDPOINT_SEPARATOR = '#'.freeze
16
+
17
+ # @since 0.4.1
18
+ # @api private
19
+ QUOTED_NAME = /(\"|\'|\\)/
20
+
13
21
  # @since 0.3.0
14
22
  # @api private
15
23
  SUFFIX = '.rb'.freeze
@@ -27,7 +35,7 @@ module Lotus
27
35
  def initialize(command)
28
36
  super
29
37
 
30
- @name = Utils::String.new(name).underscore
38
+ @name = Utils::String.new(name).underscore.gsub(QUOTED_NAME, '')
31
39
  @controller, @action = @name.split(ACTION_SEPARATOR)
32
40
  @controller_name = Utils::String.new(@controller).classify
33
41
  @action_name = Utils::String.new(@action).classify
@@ -119,7 +127,7 @@ module Lotus
119
127
 
120
128
  # Insert at the top of the file
121
129
  cli.insert_into_file _routes_path, before: /\A(.*)/ do
122
- "get '#{ _route_url }', to: '#{ @name }'\n"
130
+ "get '#{ _route_url }', to: '#{ _route_endpoint }'\n"
123
131
  end
124
132
  end
125
133
 
@@ -129,6 +137,12 @@ module Lotus
129
137
  options.fetch(:url, "/#{ @controller }")
130
138
  end
131
139
 
140
+ # @since 0.4.1
141
+ # @api private
142
+ def _route_endpoint
143
+ "#{ @controller }#{ROUTE_ENDPOINT_SEPARATOR}#{ @action }"
144
+ end
145
+
132
146
  # @since 0.3.0
133
147
  # @api private
134
148
  def _routes_path
@@ -110,7 +110,7 @@ module Lotus
110
110
  end
111
111
 
112
112
  unless git_dir_present?
113
- cli.template(source.join('gitignore.tt'), target.join('.gitignore'), opts)
113
+ cli.template(source.join(database_type == :file_system ? 'gitignore.tt' : '.gitignore'), target.join('.gitignore'), opts)
114
114
  cli.run("git init #{Shellwords.escape(target)}", capture: true)
115
115
  end
116
116
  end
@@ -174,8 +174,10 @@ module Lotus
174
174
  "sqlite://db/#{Shellwords.escape(app_name)}"
175
175
  when 'memory'
176
176
  "memory://localhost/#{app_name}"
177
- else
177
+ when 'filesystem'
178
178
  "file:///db/#{app_name}"
179
+ else
180
+ raise "\"#{@database}\" is not a valid database type"
179
181
  end
180
182
  end
181
183
  end
@@ -1,3 +1,3 @@
1
1
  # Define ENV variables for development environment
2
2
  <%= config[:upcase_app_name] %>_DATABASE_URL="<%= config[:database_config][:uri][:development] %>"
3
- <%= config[:upcase_app_name] %>_SESSIONS_SECRET="<% SecureRandom.hex(32) %>"
3
+ <%= config[:upcase_app_name] %>_SESSIONS_SECRET="<%= SecureRandom.hex(32) %>"
@@ -1,3 +1,3 @@
1
1
  # Define ENV variables for test environment
2
2
  <%= config[:app_name].to_env_s %>_DATABASE_URL="<%= config[:database_config][:uri][:test] %>"
3
- <%= config[:upcase_app_name] %>_SESSIONS_SECRET="<% SecureRandom.hex(32) %>"
3
+ <%= config[:upcase_app_name] %>_SESSIONS_SECRET="<%= SecureRandom.hex(32) %>"
File without changes
@@ -19,7 +19,6 @@ module Lotus
19
19
  end
20
20
 
21
21
  def start
22
-
23
22
  opts = {
24
23
  app_name: app_name,
25
24
  lotus_head: @lotus_head,
@@ -91,7 +90,7 @@ module Lotus
91
90
  end
92
91
 
93
92
  unless git_dir_present?
94
- cli.template(source.join('gitignore.tt'), target.join('.gitignore'), opts)
93
+ cli.template(source.join(database_type == :file_system ? 'gitignore.tt' : '.gitignore'), target.join('.gitignore'), opts)
95
94
  cli.run("git init #{Shellwords.escape(target)}", capture: true)
96
95
  end
97
96
 
@@ -157,8 +156,10 @@ module Lotus
157
156
  "sqlite://db/#{Shellwords.escape(app_name)}"
158
157
  when 'memory'
159
158
  "memory://localhost/#{app_name}"
160
- else
159
+ when 'filesystem'
161
160
  "file:///db/#{app_name}"
161
+ else
162
+ raise "\"#{@database}\" is not a valid database type"
162
163
  end
163
164
  end
164
165
 
@@ -17,6 +17,8 @@ module Lotus
17
17
  # @since 0.3.1
18
18
  # @api private
19
19
  def start
20
+ assert_model!
21
+
20
22
  opts = {
21
23
  model_name: @model_name
22
24
  }
@@ -75,6 +77,14 @@ module Lotus
75
77
  def name
76
78
  Utils::String.new(app_name || super).underscore
77
79
  end
80
+
81
+ # @since 0.4.1
82
+ # @api private
83
+ def assert_model!
84
+ if @model_name.nil? || @model_name.empty?
85
+ raise Lotus::Commands::Generate::Error.new("Missing model name")
86
+ end
87
+ end
78
88
  end
79
89
  end
80
90
  end
@@ -62,7 +62,7 @@ module Lotus
62
62
  #
63
63
  # @since 0.2.0
64
64
  def use(middleware, *args, &blk)
65
- @stack << [middleware, args, blk]
65
+ @stack.unshift [middleware, args, blk]
66
66
  end
67
67
 
68
68
  # @api private
data/lib/lotus/version.rb CHANGED
@@ -2,5 +2,5 @@ module Lotus
2
2
  # Defines the version
3
3
  #
4
4
  # @since 0.1.0
5
- VERSION = '0.4.0'.freeze
5
+ VERSION = '0.4.1'.freeze
6
6
  end
data/lotusrb.gemspec CHANGED
@@ -6,8 +6,8 @@ require 'lotus/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'lotusrb'
8
8
  spec.version = Lotus::VERSION
9
- spec.authors = ['Luca Guidi']
10
- spec.email = ['me@lucaguidi.com']
9
+ spec.authors = ['Luca Guidi', 'Trung Lê', 'Alfonso Uceda Pompa']
10
+ spec.email = ['me@lucaguidi.com', 'trung.le@ruby-journal.com', 'uceda73@gmail.com']
11
11
  spec.summary = %q{A complete web framework for Ruby}
12
12
  spec.description = %q{A complete web framework for Ruby}
13
13
  spec.homepage = 'http://lotusrb.org'
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
  spec.required_ruby_version = '>= 2.0.0'
21
21
 
22
- spec.add_dependency 'lotus-utils', '~> 0.5'
23
- spec.add_dependency 'lotus-router', '~> 0.4', '>= 0.4.1'
22
+ spec.add_dependency 'lotus-utils', '~> 0.5', '>= 0.5.1'
23
+ spec.add_dependency 'lotus-router', '~> 0.4', '>= 0.4.2'
24
24
  spec.add_dependency 'lotus-controller', '~> 0.4', '>= 0.4.4'
25
- spec.add_dependency 'lotus-view', '~> 0.4'
25
+ spec.add_dependency 'lotus-view', '~> 0.4', '>= 0.4.3'
26
26
  spec.add_dependency 'lotus-helpers', '~> 0.2'
27
27
  spec.add_dependency 'shotgun', '~> 0.9'
28
28
  spec.add_dependency 'dotenv', '~> 2.0'
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lotusrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
+ - Trung Lê
9
+ - Alfonso Uceda Pompa
8
10
  autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2015-06-23 00:00:00.000000000 Z
13
+ date: 2015-07-10 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: lotus-utils
@@ -17,6 +19,9 @@ dependencies:
17
19
  - - "~>"
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0.5'
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.5.1
20
25
  type: :runtime
21
26
  prerelease: false
22
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +29,9 @@ dependencies:
24
29
  - - "~>"
25
30
  - !ruby/object:Gem::Version
26
31
  version: '0.5'
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 0.5.1
27
35
  - !ruby/object:Gem::Dependency
28
36
  name: lotus-router
29
37
  requirement: !ruby/object:Gem::Requirement
@@ -33,7 +41,7 @@ dependencies:
33
41
  version: '0.4'
34
42
  - - ">="
35
43
  - !ruby/object:Gem::Version
36
- version: 0.4.1
44
+ version: 0.4.2
37
45
  type: :runtime
38
46
  prerelease: false
39
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -43,7 +51,7 @@ dependencies:
43
51
  version: '0.4'
44
52
  - - ">="
45
53
  - !ruby/object:Gem::Version
46
- version: 0.4.1
54
+ version: 0.4.2
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: lotus-controller
49
57
  requirement: !ruby/object:Gem::Requirement
@@ -71,6 +79,9 @@ dependencies:
71
79
  - - "~>"
72
80
  - !ruby/object:Gem::Version
73
81
  version: '0.4'
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 0.4.3
74
85
  type: :runtime
75
86
  prerelease: false
76
87
  version_requirements: !ruby/object:Gem::Requirement
@@ -78,6 +89,9 @@ dependencies:
78
89
  - - "~>"
79
90
  - !ruby/object:Gem::Version
80
91
  version: '0.4'
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 0.4.3
81
95
  - !ruby/object:Gem::Dependency
82
96
  name: lotus-helpers
83
97
  requirement: !ruby/object:Gem::Requirement
@@ -193,6 +207,8 @@ dependencies:
193
207
  description: A complete web framework for Ruby
194
208
  email:
195
209
  - me@lucaguidi.com
210
+ - trung.le@ruby-journal.com
211
+ - uceda73@gmail.com
196
212
  executables:
197
213
  - lotus
198
214
  extensions: []
@@ -253,6 +269,7 @@ files:
253
269
  - lib/lotus/generators/application/app/.env.development.tt
254
270
  - lib/lotus/generators/application/app/.env.test.tt
255
271
  - lib/lotus/generators/application/app/.env.tt
272
+ - lib/lotus/generators/application/app/.gitignore
256
273
  - lib/lotus/generators/application/app/.gitkeep
257
274
  - lib/lotus/generators/application/app/Gemfile.tt
258
275
  - lib/lotus/generators/application/app/Rakefile.minitest.tt
@@ -282,6 +299,7 @@ files:
282
299
  - lib/lotus/generators/application/container/.env.development.tt
283
300
  - lib/lotus/generators/application/container/.env.test.tt
284
301
  - lib/lotus/generators/application/container/.env.tt
302
+ - lib/lotus/generators/application/container/.gitignore
285
303
  - lib/lotus/generators/application/container/.gitkeep
286
304
  - lib/lotus/generators/application/container/Gemfile.tt
287
305
  - lib/lotus/generators/application/container/Rakefile.minitest.tt