hanami 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 744c995f7c17f73345a0e1eefe34b988c6d9ea75
4
- data.tar.gz: a159b8f7ac8e22531cf5d37ff2ec3652fe6cbb12
3
+ metadata.gz: 8b7009c4b87b140d19b16be7a2dcf3b7809c1519
4
+ data.tar.gz: 2593b7fce5f032a478e6977ff407e33237189c6d
5
5
  SHA512:
6
- metadata.gz: a7027ad8ca9cb7a80fb5485a6cacf5a2a15e73c5f5e1202c5d594068193d9e0377fcf102de18cf3de85812767fc95177f21c88a8b39c45016b65ec30049a5e1a
7
- data.tar.gz: 7a340b00d09af67d7a23957beb974f5a2f103ab4ec45277ba730cc4391a959fde13d262730a70df01ce687674ea4cc1f88b547576eaa95628a7a1395e7fbca5e
6
+ metadata.gz: 5b718475924f9d0af9892d412cef58cf97e8eb24a54f7977be6d0061ece7703082cdca2f77a1ca7eaf9d05b9c32bd1fc6d01f3ff290bf60d6f4a300cbde8fc12
7
+ data.tar.gz: 754321b70b997b1416732336de62a5822e675e879475e994572d5b616161ee40844292415b5b68b4176bae25ec211c48695b83e060046a8d632e3d4624e69734
@@ -1,6 +1,11 @@
1
1
  # Hanami
2
2
  The web, with simplicity.
3
3
 
4
+ ## v0.7.1 - 2016-02-05
5
+ ### Fixed
6
+ - [Anton Davydov] Fixed routing issue when static assets server tried to hijiack requests belonging to dynamic endpoints
7
+ - [Anatolii Didukh] Ensure to fallback to default engine for `hanami console`
8
+
4
9
  ## v0.7.0 - 2016-01-22
5
10
  ### Changed
6
11
  - [Luca Guidi] Renamed the project
@@ -40,42 +40,6 @@ module Hanami
40
40
  end
41
41
  end
42
42
 
43
- # Registry of Hanami applications in the current Ruby process
44
- #
45
- # @return [Set] a set of all the registered applications
46
- #
47
- # @since 0.2.0
48
- # @api private
49
- def self.applications
50
- synchronize do
51
- @@applications ||= Set.new
52
- end
53
- end
54
-
55
- # Configure the application.
56
- # It yields the given block in the context of the configuration
57
- #
58
- # @param environment [Symbol,nil] the configuration environment name
59
- # @param blk [Proc] the configuration block
60
- #
61
- # @since 0.1.0
62
- #
63
- # @see Hanami::Configuration
64
- #
65
- # @example
66
- # require 'hanami'
67
- #
68
- # module Bookshelf
69
- # Application < Hanami::Application
70
- # configure do
71
- # # ...
72
- # end
73
- # end
74
- # end
75
- def self.configure(environment = nil, &blk)
76
- configuration.configure(environment, &blk)
77
- end
78
-
79
43
  # Return the routes for this application
80
44
  #
81
45
  # @return [Hanami::Router] a route set
@@ -111,78 +75,6 @@ module Hanami
111
75
  self.class.load!(self)
112
76
  end
113
77
 
114
- # Eager load the application configuration, by activating the framework
115
- # duplication mechanisms.
116
- #
117
- # @param application [Hanami::Application, Class<Hanami::Application>]
118
- # @return void
119
- #
120
- # @since 0.1.1
121
- #
122
- # @example
123
- # require 'hanami'
124
- #
125
- # module OneFile
126
- # class Application < Hanami::Application
127
- # configure do
128
- # routes do
129
- # get '/', to: 'dashboard#index'
130
- # end
131
- # end
132
- #
133
- # load!
134
- # end
135
- #
136
- # module Controllers::Dashboard
137
- # class Index
138
- # include OneFile::Action
139
- #
140
- # def call(params)
141
- # self.body = 'Hello!'
142
- # end
143
- # end
144
- # end
145
- # end
146
- def self.load!(application = self)
147
- Hanami::Loader.new(application).load!
148
- end
149
-
150
- # Preload all the registered applications, by yielding their configurations
151
- # and preparing the frameworks.
152
- #
153
- # This is useful for testing suites, where we want to make Hanami frameworks
154
- # ready, but not preload applications code.
155
- #
156
- # This allows to test components such as views or actions in isolation and
157
- # to have faster boot times.
158
- #
159
- # @return [void]
160
- #
161
- # @since 0.2.0
162
- def self.preload!
163
- synchronize do
164
- applications.each(&:load!)
165
- end
166
-
167
- nil
168
- end
169
-
170
- # Full preload for all the registered applications.
171
- #
172
- # This is useful in console where we want all the application code available.
173
- #
174
- # @return [void]
175
- #
176
- # @since 0.2.1
177
- # @api private
178
- def self.preload_applications!
179
- synchronize do
180
- applications.each { |app| app.new }
181
- end
182
-
183
- nil
184
- end
185
-
186
78
  # Return the configuration for this application
187
79
  #
188
80
  # @since 0.1.0
@@ -229,15 +121,126 @@ module Hanami
229
121
  @middleware ||= configuration.middleware
230
122
  end
231
123
 
232
- private
124
+ class << self
125
+
126
+ # Registry of Hanami applications in the current Ruby process
127
+ #
128
+ # @return [Set] a set of all the registered applications
129
+ #
130
+ # @since 0.2.0
131
+ # @api private
132
+ def applications
133
+ synchronize do
134
+ @@applications ||= Set.new
135
+ end
136
+ end
233
137
 
234
- # Yields the given block in a critical section
235
- #
236
- # @since 0.2.0
237
- # @api private
238
- def self.synchronize
239
- Mutex.new.synchronize do
240
- yield
138
+ # Configure the application.
139
+ # It yields the given block in the context of the configuration
140
+ #
141
+ # @param environment [Symbol,nil] the configuration environment name
142
+ # @param blk [Proc] the configuration block
143
+ #
144
+ # @since 0.1.0
145
+ #
146
+ # @see Hanami::Configuration
147
+ #
148
+ # @example
149
+ # require 'hanami'
150
+ #
151
+ # module Bookshelf
152
+ # Application < Hanami::Application
153
+ # configure do
154
+ # # ...
155
+ # end
156
+ # end
157
+ # end
158
+ def configure(environment = nil, &blk)
159
+ configuration.configure(environment, &blk)
160
+ end
161
+
162
+ # Eager load the application configuration, by activating the framework
163
+ # duplication mechanisms.
164
+ #
165
+ # @param application [Hanami::Application, Class<Hanami::Application>]
166
+ # @return void
167
+ #
168
+ # @since 0.1.1
169
+ #
170
+ # @example
171
+ # require 'hanami'
172
+ #
173
+ # module OneFile
174
+ # class Application < Hanami::Application
175
+ # configure do
176
+ # routes do
177
+ # get '/', to: 'dashboard#index'
178
+ # end
179
+ # end
180
+ #
181
+ # load!
182
+ # end
183
+ #
184
+ # module Controllers::Dashboard
185
+ # class Index
186
+ # include OneFile::Action
187
+ #
188
+ # def call(params)
189
+ # self.body = 'Hello!'
190
+ # end
191
+ # end
192
+ # end
193
+ # end
194
+ def load!(application = self)
195
+ Hanami::Loader.new(application).load!
196
+ end
197
+
198
+ # Preload all the registered applications, by yielding their configurations
199
+ # and preparing the frameworks.
200
+ #
201
+ # This is useful for testing suites, where we want to make Hanami frameworks
202
+ # ready, but not preload applications code.
203
+ #
204
+ # This allows to test components such as views or actions in isolation and
205
+ # to have faster boot times.
206
+ #
207
+ # @return [void]
208
+ #
209
+ # @since 0.2.0
210
+ def preload!
211
+ synchronize do
212
+ applications.each(&:load!)
213
+ end
214
+
215
+ nil
216
+ end
217
+
218
+ # Full preload for all the registered applications.
219
+ #
220
+ # This is useful in console where we want all the application code available.
221
+ #
222
+ # @return [void]
223
+ #
224
+ # @since 0.2.1
225
+ # @api private
226
+ def preload_applications!
227
+ synchronize do
228
+ applications.each { |app| app.new }
229
+ end
230
+
231
+ nil
232
+ end
233
+
234
+ private
235
+
236
+ # Yields the given block in a critical section
237
+ #
238
+ # @since 0.2.0
239
+ # @api private
240
+ def synchronize
241
+ Mutex.new.synchronize do
242
+ yield
243
+ end
241
244
  end
242
245
  end
243
246
  end
@@ -22,7 +22,7 @@ module Hanami
22
22
  'irb' => 'IRB'
23
23
  }.freeze
24
24
 
25
- DEFAULT_ENGINE = 'irb'.freeze
25
+ DEFAULT_ENGINE = ['irb'].freeze
26
26
 
27
27
  # @since 0.1.0
28
28
  attr_reader :options
@@ -15,7 +15,7 @@ module Hanami
15
15
  DEFAULT_ARCHITECTURE = 'container'.freeze
16
16
  DEFAULT_APPLICATION_BASE_URL = '/'.freeze
17
17
 
18
- attr_reader :options, :target_path, :database_config
18
+ attr_reader :options, :target_path, :database_config, :test_framework
19
19
 
20
20
  def initialize(options, name)
21
21
  @options = Hanami::Utils::Hash.new(options).symbolize!
@@ -28,6 +28,7 @@ module Hanami
28
28
 
29
29
  @hanami_model_version = '~> 0.5'
30
30
  @database_config = Hanami::Generators::DatabaseConfig.new(options[:database], app_name)
31
+ @test_framework = Hanami::Generators::TestFramework.new(hanamirc, @options[:test])
31
32
  end
32
33
 
33
34
  def start
@@ -41,10 +42,6 @@ module Hanami
41
42
 
42
43
  private
43
44
 
44
- def test_framework
45
- @test_framework ||= Hanami::Generators::TestFramework.new(hanamirc, options[:test])
46
- end
47
-
48
45
  def hanamirc
49
46
  @hanamirc ||= Hanamirc.new(Pathname.new('.'))
50
47
  end
@@ -103,7 +100,7 @@ module Hanami
103
100
 
104
101
  def assert_name!
105
102
  if @name.nil? || @name.strip == '' || @name.include?(File::SEPARATOR)
106
- raise ArgumentError.new("APPLICATION_NAME is requried and must not contain #{File::SEPARATOR}.")
103
+ raise ArgumentError.new("APPLICATION_NAME is required and must not contain #{File::SEPARATOR}.")
107
104
  end
108
105
  end
109
106
 
@@ -48,7 +48,7 @@ module Hanami
48
48
  end
49
49
 
50
50
  def _render_status_page(action, response)
51
- if render_status_page?(action, response)
51
+ if render_status_page?(action)
52
52
  Hanami::Views::Default.render(@templates, response[STATUS], response: response, format: :html)
53
53
  end
54
54
  end
@@ -61,7 +61,7 @@ module Hanami
61
61
  SUCCESSFUL_STATUSES.include?(response[STATUS])
62
62
  end
63
63
 
64
- def render_status_page?(action, response)
64
+ def render_status_page?(action)
65
65
  RENDERABLE_FORMATS.include?(action.format)
66
66
  end
67
67
 
@@ -6,6 +6,10 @@ module Hanami
6
6
  PATH_INFO = 'PATH_INFO'.freeze
7
7
  PUBLIC_DIRECTORY = Hanami.public_directory.join('**', '*').to_s.freeze
8
8
 
9
+ # @since x.x.x
10
+ # @api private
11
+ URL_SEPARATOR = '/'.freeze
12
+
9
13
  def initialize(app)
10
14
  super(app, root: Hanami.public_directory, header_rules: _header_rules)
11
15
  @sources = _sources_from_applications
@@ -14,9 +18,9 @@ module Hanami
14
18
  def call(env)
15
19
  path = env[PATH_INFO]
16
20
 
17
- prefix, config = @sources.find {|p, _| path.start_with?(p) }
18
- original = if prefix && config
19
- config.sources.find(path.sub(prefix, ''))
21
+ prefix, config = @sources.find { |p, _| path.start_with?(p) }
22
+ if prefix && config
23
+ original = config.sources.find(path.sub(prefix, ''))
20
24
  end
21
25
 
22
26
  if can_serve(path, original)
@@ -31,8 +35,9 @@ module Hanami
31
35
  private
32
36
 
33
37
  def can_serve(path, original = nil)
38
+ file_path = path.gsub(URL_SEPARATOR, ::File::SEPARATOR)
34
39
  destination = Dir[PUBLIC_DIRECTORY].find do |file|
35
- file.index(path).to_i > 0
40
+ file.end_with?(file_path)
36
41
  end
37
42
 
38
43
  (super(path) || !!destination) && _fresh?(original, destination)
@@ -2,5 +2,5 @@ module Hanami
2
2
  # Defines the version
3
3
  #
4
4
  # @since 0.1.0
5
- VERSION = '0.7.0'.freeze
5
+ VERSION = '0.7.1'.freeze
6
6
  end
@@ -9,7 +9,7 @@ module Hanami
9
9
  @body = body
10
10
  end
11
11
 
12
- def render(context)
12
+ def render(_context)
13
13
  @body
14
14
  end
15
15
  end
@@ -5,7 +5,7 @@ require 'hanami/utils/string'
5
5
 
6
6
  module Hanami
7
7
  class Welcome
8
- def initialize(app)
8
+ def initialize(_app)
9
9
  @root = Pathname.new(__dir__).join('templates').realpath
10
10
  end
11
11
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-01-22 00:00:00.000000000 Z
13
+ date: 2016-02-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hanami-utils