big_band 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- = BigBand 0.2.1
1
+ = BigBand 0.2.2
2
2
  BigBand is a collection of Sinatra extensions and offers better sinatra integration for common tools.
3
3
  It is pluggable and each extension can be used in stand alone mode.
4
4
 
@@ -6,6 +6,7 @@ The main features are:
6
6
  * Routes as first class objects
7
7
  * Better handling of #set: Merges hashes, more hooks
8
8
  * Better compass integration
9
+ * YAML config files mapping to set (overwriting present values/methods is prevented)
9
10
  * Rails-like helpers, like content_for
10
11
  * Unicorn and Rainbows integration
11
12
  * Smart code reloader only reloading changed files and getting rid of old routes
@@ -141,6 +142,37 @@ But what about more complex setups?
141
142
  Note that already generated routes will be deactivated by calling
142
143
  get_compass again.
143
144
 
145
+ === ConfigFile
146
+
147
+ Using YAML config files. Config files are expected to represent hashes.
148
+ When parsing such a config file it will use set to store that value, ignoring
149
+ those directly defined in the app (not those defined by the class it inherits
150
+ from, i.e. Sinatra::Base or BigBand).
151
+
152
+ Example:
153
+
154
+ class MyApp << BigBand
155
+ set :foo, "bar"
156
+ config_file "settings.yml" # general settings
157
+ config_file "#{environment}.settings.yml" # environment specific settings
158
+ foo # => "bar"
159
+ end
160
+
161
+ Now you could write in your settings.yml:
162
+
163
+ ---
164
+ server: [thin, webrick] # use only thin or webrick for #run!
165
+ public: /var/www # load public files from /var/www
166
+ port: 8080 # run on port 8080
167
+ foo: baz
168
+ database:
169
+ adapter: sqlite
170
+
171
+ In you development.settings.yml:
172
+
173
+ database:
174
+ db_file: development.db
175
+
144
176
  === MoreHelpers
145
177
 
146
178
  Adds more helper methods (more docs coming soon).
@@ -0,0 +1,48 @@
1
+ require "sinatra/base"
2
+ require "yaml"
3
+
4
+ class BigBand < Sinatra::Base
5
+ # Using YAML config files. Config files are expected to represent hashes.
6
+ # When parsing such a config file it will use set to store that value, ignoring
7
+ # those directly defined in the app (not those defined by the class it inherits
8
+ # from, i.e. Sinatra::Base or BigBand).
9
+ #
10
+ # Example:
11
+ #
12
+ # class MyApp << BigBand
13
+ # set :foo, "bar"
14
+ # config_file "settings.yml" # general settings
15
+ # config_file "#{environment}.settings.yml" # environment specific settings
16
+ # foo # => "bar"
17
+ # end
18
+ #
19
+ # Now you could write in your settings.yml:
20
+ #
21
+ # ---
22
+ # server: [thin, webrick] # use only thin or webrick for #run!
23
+ # public: /var/www # load public files from /var/www
24
+ # port: 8080 # run on port 8080
25
+ # foo: baz
26
+ # database:
27
+ # adapter: sqlite
28
+ #
29
+ # In you development.settings.yml:
30
+ #
31
+ # database:
32
+ # db_file: development.db
33
+ module ConfigFile
34
+
35
+ def self.registered(klass)
36
+ klass.register BasicExtensions
37
+ end
38
+
39
+ def config_file(*paths)
40
+ paths.each do |pattern|
41
+ files = root_glob(pattern.to_s)
42
+ files.each { |f| YAML.load_file(f).each_pair { |k,v| set k, v unless methods(false).any? { |m| m.to_s = k.to_s } } }
43
+ warn "WARNING: could not load config file #{pattern}" if files.empty?
44
+ end
45
+ end
46
+
47
+ end
48
+ end
@@ -1,3 +1,3 @@
1
1
  require "big_band/integration" unless defined? BigBand
2
- BigBand::VERSION = "0.2.1"
3
- BigBand::DATE = "2009-12-28"
2
+ BigBand::VERSION = "0.2.2"
3
+ BigBand::DATE = "2009-12-30"
data/lib/big_band.rb CHANGED
@@ -9,6 +9,7 @@ require "set"
9
9
  # * Routes as first class objects
10
10
  # * Better handling of #set: Merges hashes, more hooks
11
11
  # * Better compass integration
12
+ # * YAML config files mapping to set (overwriting present values/methods is prevented)
12
13
  # * Rails-like helpers, like content_for
13
14
  # * Unicorn and Rainbows integration
14
15
  # * Smart code reloader only reloading changed files and getting rid of old routes
@@ -210,6 +211,7 @@ class BigBand < Sinatra::Base
210
211
  default_extension :AdvancedRoutes, "big_band/advanced_routes"
211
212
  default_extension :BasicExtensions, "big_band/basic_extensions"
212
213
  default_extension :Compass, "big_band/compass"
214
+ default_extension :ConfigFile, "big_band/config_file"
213
215
  default_extension :MoreHelpers, "big_band/more_helpers"
214
216
  default_extension :MoreServer, "big_band/more_server"
215
217
  default_extension :Reloader, "big_band/reloader", :development
@@ -224,6 +226,7 @@ def BigBand(*options)
224
226
  end
225
227
 
226
228
  module Sinatra
229
+ BigBand = ::BigBand
227
230
  module Delegator
228
231
  # Hooks into Sinatra to allow easy integration with "require 'sinatra'".
229
232
  def self.included(klass)
@@ -0,0 +1 @@
1
+ require "big_band"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: big_band
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-28 00:00:00 +01:00
12
+ date: 2009-12-30 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -90,6 +90,7 @@ files:
90
90
  - lib/big_band/compass/stylesheets/big_band/utilities/_fancy_buttons.sass
91
91
  - lib/big_band/compass/stylesheets/big_band/utilities/_html5.sass
92
92
  - lib/big_band/compass.rb
93
+ - lib/big_band/config_file.rb
93
94
  - lib/big_band/files/overlay-button.png
94
95
  - lib/big_band/integration/bacon.rb
95
96
  - lib/big_band/integration/monk.rb
@@ -112,6 +113,7 @@ files:
112
113
  - lib/big_band/web_inspector.rb
113
114
  - lib/big_band.rb
114
115
  - lib/big_bang.rb
116
+ - lib/sinatra/big_band.rb
115
117
  - lib/yard-sinatra.rb
116
118
  - LICENSE
117
119
  - Rakefile