rails_bridge 0.0.5

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 (73) hide show
  1. data/.rspec +1 -0
  2. data/Gemfile +21 -0
  3. data/Gemfile.lock +154 -0
  4. data/LICENSE +13 -0
  5. data/README.rdoc +244 -0
  6. data/Rakefile +46 -0
  7. data/VERSION +1 -0
  8. data/app/controllers/rails_bridge/layout_bridge_controller.rb +43 -0
  9. data/app/views/content.html.erb +13 -0
  10. data/app/views/rails_bridge/layout_bridge/index.html.erb +6 -0
  11. data/config/routes.rb +11 -0
  12. data/lib/generators/content_bridge/USAGE +12 -0
  13. data/lib/generators/content_bridge/content_bridge_generator.rb +9 -0
  14. data/lib/generators/content_bridge/templates/content_bridge.rb +47 -0
  15. data/lib/rails_bridge.rb +16 -0
  16. data/lib/rails_bridge/content_bridge.rb +137 -0
  17. data/lib/rails_bridge/content_request.rb +100 -0
  18. data/lib/rails_bridge/engine.rb +34 -0
  19. data/rails_bridge.gemspec +186 -0
  20. data/script/console +2 -0
  21. data/spec/dummy/.rspec +1 -0
  22. data/spec/dummy/Rakefile +7 -0
  23. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  24. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  25. data/spec/dummy/app/rails_bridge/content_bridges/twitter_content_bridge.rb +26 -0
  26. data/spec/dummy/app/rails_bridge/layout_bridge/layouts/application/content.html.erb +1 -0
  27. data/spec/dummy/app/rails_bridge/layout_bridge/views/layouts/_partial.html.erb +1 -0
  28. data/spec/dummy/app/views/layouts/_partial.html.erb +1 -0
  29. data/spec/dummy/app/views/layouts/alternative.html.erb +0 -0
  30. data/spec/dummy/app/views/layouts/application.html.erb +17 -0
  31. data/spec/dummy/autotest/discover.rb +2 -0
  32. data/spec/dummy/config.ru +4 -0
  33. data/spec/dummy/config/application.rb +44 -0
  34. data/spec/dummy/config/boot.rb +10 -0
  35. data/spec/dummy/config/database.yml +22 -0
  36. data/spec/dummy/config/environment.rb +5 -0
  37. data/spec/dummy/config/environments/development.rb +26 -0
  38. data/spec/dummy/config/environments/production.rb +49 -0
  39. data/spec/dummy/config/environments/test.rb +35 -0
  40. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  41. data/spec/dummy/config/initializers/inflections.rb +10 -0
  42. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  43. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  44. data/spec/dummy/config/initializers/session_store.rb +8 -0
  45. data/spec/dummy/config/locales/en.yml +5 -0
  46. data/spec/dummy/config/routes.rb +2 -0
  47. data/spec/dummy/db/development.sqlite3 +0 -0
  48. data/spec/dummy/db/test.sqlite3 +0 -0
  49. data/spec/dummy/public/404.html +26 -0
  50. data/spec/dummy/public/422.html +26 -0
  51. data/spec/dummy/public/500.html +26 -0
  52. data/spec/dummy/public/favicon.ico +0 -0
  53. data/spec/dummy/public/javascripts/application.js +2 -0
  54. data/spec/dummy/public/javascripts/controls.js +965 -0
  55. data/spec/dummy/public/javascripts/dragdrop.js +974 -0
  56. data/spec/dummy/public/javascripts/effects.js +1123 -0
  57. data/spec/dummy/public/javascripts/prototype.js +6001 -0
  58. data/spec/dummy/public/javascripts/rails.js +175 -0
  59. data/spec/dummy/public/stylesheets/.gitkeep +0 -0
  60. data/spec/dummy/script/rails +6 -0
  61. data/spec/dummy/spec/spec_helper.rb +33 -0
  62. data/spec/integration/content_bridge_spec.rb +82 -0
  63. data/spec/integration/engine_spec.rb +25 -0
  64. data/spec/requests/layout_bridge_controller_spec.rb +16 -0
  65. data/spec/spec_helper.rb +62 -0
  66. data/spec/support/content_bridge_helper.rb +26 -0
  67. data/spec/support/layout_bridge_helper.rb +2 -0
  68. data/spec/support/rails_bridge_helper.rb +12 -0
  69. data/spec/support/test_server_helper.rb +125 -0
  70. data/spec/unit/content_bridge_spec.rb +59 -0
  71. data/spec/unit/content_request_spec.rb +84 -0
  72. data/spec/unit/rails_bridge_spec.rb +11 -0
  73. metadata +380 -0
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,21 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "activesupport"
4
+ gem 'typhoeus', '~> 0.2.0'
5
+ gem 'rails_bridge', :require=>'rails_bridge', :path=>'.'
6
+ gem 'wdd-ruby-ext', '~> 0.2.3'
7
+
8
+ # gem 'ruby-debug19'
9
+
10
+ group :test, :development do
11
+ gem 'rails', '>= 3.0'
12
+ gem 'jeweler'
13
+ gem "sqlite3-ruby", :require => "sqlite3"
14
+ gem "capybara", :git=>'https://github.com/jnicklas/capybara.git', :branch=>'master'
15
+ gem 'rspec'
16
+ gem 'rspec-rails'
17
+ gem 'eventmachine'
18
+ gem 'dalli'
19
+ gem 'syntax'
20
+ gem 'tm_helper', :path=>"/Users/billdoughty/src/capitalthought/tm_helper"
21
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,154 @@
1
+ GIT
2
+ remote: https://github.com/jnicklas/capybara.git
3
+ revision: af9dd3670419b3e39743e1b15bb271b6aaf4dc15
4
+ branch: master
5
+ specs:
6
+ capybara (0.4.0)
7
+ celerity (>= 0.7.9)
8
+ culerity (>= 0.2.4)
9
+ mime-types (>= 1.16)
10
+ nokogiri (>= 1.3.3)
11
+ rack (>= 1.0.0)
12
+ rack-test (>= 0.5.4)
13
+ selenium-webdriver (>= 0.0.27)
14
+ xpath (~> 0.1.2)
15
+
16
+ PATH
17
+ remote: .
18
+ specs:
19
+ rails_bridge (0.0.4)
20
+ activesupport
21
+ rails_bridge
22
+ typhoeus (~> 0.2.0)
23
+ wdd-ruby-ext (~> 0.2.3)
24
+
25
+ PATH
26
+ remote: /Users/billdoughty/src/capitalthought/tm_helper
27
+ specs:
28
+ tm_helper (0.0.1)
29
+
30
+ GEM
31
+ remote: http://rubygems.org/
32
+ specs:
33
+ abstract (1.0.0)
34
+ actionmailer (3.0.3)
35
+ actionpack (= 3.0.3)
36
+ mail (~> 2.2.9)
37
+ actionpack (3.0.3)
38
+ activemodel (= 3.0.3)
39
+ activesupport (= 3.0.3)
40
+ builder (~> 2.1.2)
41
+ erubis (~> 2.6.6)
42
+ i18n (~> 0.4)
43
+ rack (~> 1.2.1)
44
+ rack-mount (~> 0.6.13)
45
+ rack-test (~> 0.5.6)
46
+ tzinfo (~> 0.3.23)
47
+ activemodel (3.0.3)
48
+ activesupport (= 3.0.3)
49
+ builder (~> 2.1.2)
50
+ i18n (~> 0.4)
51
+ activerecord (3.0.3)
52
+ activemodel (= 3.0.3)
53
+ activesupport (= 3.0.3)
54
+ arel (~> 2.0.2)
55
+ tzinfo (~> 0.3.23)
56
+ activeresource (3.0.3)
57
+ activemodel (= 3.0.3)
58
+ activesupport (= 3.0.3)
59
+ activesupport (3.0.3)
60
+ arel (2.0.6)
61
+ builder (2.1.2)
62
+ celerity (0.8.6)
63
+ childprocess (0.1.6)
64
+ ffi (~> 0.6.3)
65
+ culerity (0.2.13)
66
+ dalli (1.0.0)
67
+ diff-lcs (1.1.2)
68
+ erubis (2.6.6)
69
+ abstract (>= 1.0.0)
70
+ eventmachine (0.12.10)
71
+ ffi (0.6.3)
72
+ rake (>= 0.8.7)
73
+ git (1.2.5)
74
+ i18n (0.5.0)
75
+ jeweler (1.5.2)
76
+ bundler (~> 1.0.0)
77
+ git (>= 1.2.5)
78
+ rake
79
+ json_pure (1.4.6)
80
+ mail (2.2.13)
81
+ activesupport (>= 2.3.6)
82
+ i18n (>= 0.4.0)
83
+ mime-types (~> 1.16)
84
+ treetop (~> 1.4.8)
85
+ mime-types (1.16)
86
+ nokogiri (1.4.4)
87
+ polyglot (0.3.1)
88
+ rack (1.2.1)
89
+ rack-mount (0.6.13)
90
+ rack (>= 1.0.0)
91
+ rack-test (0.5.6)
92
+ rack (>= 1.0)
93
+ rails (3.0.3)
94
+ actionmailer (= 3.0.3)
95
+ actionpack (= 3.0.3)
96
+ activerecord (= 3.0.3)
97
+ activeresource (= 3.0.3)
98
+ activesupport (= 3.0.3)
99
+ bundler (~> 1.0)
100
+ railties (= 3.0.3)
101
+ railties (3.0.3)
102
+ actionpack (= 3.0.3)
103
+ activesupport (= 3.0.3)
104
+ rake (>= 0.8.7)
105
+ thor (~> 0.14.4)
106
+ rake (0.8.7)
107
+ rspec (2.3.0)
108
+ rspec-core (~> 2.3.0)
109
+ rspec-expectations (~> 2.3.0)
110
+ rspec-mocks (~> 2.3.0)
111
+ rspec-core (2.3.1)
112
+ rspec-expectations (2.3.0)
113
+ diff-lcs (~> 1.1.2)
114
+ rspec-mocks (2.3.0)
115
+ rspec-rails (2.3.1)
116
+ actionpack (~> 3.0)
117
+ activesupport (~> 3.0)
118
+ railties (~> 3.0)
119
+ rspec (~> 2.3.0)
120
+ rubyzip (0.9.4)
121
+ selenium-webdriver (0.1.2)
122
+ childprocess (~> 0.1.5)
123
+ ffi (~> 0.6.3)
124
+ json_pure
125
+ rubyzip
126
+ sqlite3-ruby (1.3.2)
127
+ syntax (1.0.0)
128
+ thor (0.14.6)
129
+ treetop (1.4.9)
130
+ polyglot (>= 0.3.1)
131
+ typhoeus (0.2.0)
132
+ tzinfo (0.3.23)
133
+ wdd-ruby-ext (0.2.3)
134
+ xpath (0.1.2)
135
+ nokogiri (~> 1.3)
136
+
137
+ PLATFORMS
138
+ ruby
139
+
140
+ DEPENDENCIES
141
+ activesupport
142
+ capybara!
143
+ dalli
144
+ eventmachine
145
+ jeweler
146
+ rails (>= 3.0)
147
+ rails_bridge!
148
+ rspec
149
+ rspec-rails
150
+ sqlite3-ruby
151
+ syntax
152
+ tm_helper!
153
+ typhoeus (~> 0.2.0)
154
+ wdd-ruby-ext (~> 0.2.3)
data/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2010 Capital Thought, LLC
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use any part of this software or its source code except
5
+ in compliance with the License. You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/README.rdoc ADDED
@@ -0,0 +1,244 @@
1
+ = RailsBridge
2
+
3
+ * http://github.com/capitalthought/rails_bridge
4
+
5
+ == DESCRIPTION
6
+
7
+ Easy embedding of remote content into your Rails app, plus exporting of your Rails layouts templatized for other languages (such as PHP).
8
+
9
+ == SYNOPSIS
10
+
11
+ RailsBridge has two components.
12
+
13
+ === RailsBridge::ContentBridge
14
+ Allows for easy embedding of content from a remote server directly into the HTML, XML, or Javascript returned by your Rails application. The remote server may be an external application, a web service, or any other resource available via HTTP on the network.
15
+ === RailsBridge::LayoutBridge
16
+ Allows easy exporting of your Rails HTML layouts as templates for other applications.
17
+ ---
18
+ == INSTALLATION
19
+
20
+ rails_bridge is installed as a Ruby gem.
21
+
22
+ gem install rails_bridge
23
+
24
+ Include the gem in your Gemfile.
25
+
26
+ gem 'rails_bridge'
27
+
28
+ ---
29
+
30
+ == CONTENT BRIDGE
31
+
32
+ The content bridge is used to retrieve and cache content from external HTTP servers. This is achieved by defining and executing content requests. Requests are defined using the RailsBridge::ContentBridge class.
33
+
34
+ === Up and Running in 5 minutes
35
+
36
+ * Install the gem in your Rails app.
37
+ * Generate a content bridge using the provided Rails generator
38
+ rails g content_bridge twitter_status_cacher
39
+
40
+ * Edit the generated class file (app/rails_bridge/content_bridges/twitter_status_cacher.rb). The following shows an example.
41
+
42
+ require 'json'
43
+
44
+ class TwitterStatusCacher < RailsBridge::ContentBridge
45
+ self.request_timeout = 1000 # miliseconds
46
+ self.cache_timeout = 60 # seconds
47
+ self.host = 'api.twitter.com'
48
+ self.path = '/statuses/user_timeline.json'
49
+ self.default_content = '<<Twitter unavailable>>'
50
+ self.on_success {|content| JSON.parse(content).first["text"]}
51
+ end
52
+
53
+ * In your controller:
54
+ @soopa_latest_tweet = TwitterStatusCacher.get_remote_content(:params=>{:screen_name => 'soopa'})
55
+
56
+ That's it! If the request time's out before 1 second, "<<Twitter unavailable>>" will be returned instead.
57
+ If the request succeeds, the content will be cached locally for 60 seconds and returned for each
58
+ subsequent call to
59
+ TwitterStatusCacher.get_remote_content(:params=>{:screen_name => 'soopa'})
60
+
61
+ There are other more flexible ways to define reusable content requests. Read on for more details.
62
+
63
+ === Defining reusable requests
64
+
65
+ Reusable requests can be defined on the ContentBridge class:
66
+
67
+ RailsBridge::ContentBridge.content_request( :server_com ) do |request|
68
+ request.protocol = 'http' # can be 'http' or 'https'. 'http' is the default
69
+ request.host = "server.com"
70
+ request.port = 8080 # default is 80
71
+ request.path = "/some/path"
72
+ request.params = {:param1=>'a value', :param2=>'another value'} # URL query params
73
+ request.default_content = "Content unavailable at this time."
74
+ request.request_timeout = 1000 # miliseconds
75
+ request.cache_timeout = 5000 # seconds
76
+ end
77
+
78
+ These requests can then be executed using the automatically generated class method:
79
+
80
+ content = RailsBridge::ContentBridge.get_server_com
81
+
82
+ This issues an HTTP GET to "http://server.com:8080/some/path?param1=a%20value&param2=another%20value" and returns the content. If the server is unavailable or returns an error, or if the request times out, the default content is returned instead.
83
+
84
+ You can also simply use the url method to define the +protocol+, +host+, +port+, +path+, and +params+ values of a request. The following declaration is equivalent to the definition above.
85
+
86
+ RailsBridge::ContentBridge.content_request( :server_com ) do |request|
87
+ request.url = "http://server.com:8080/some/path?p1=value"
88
+ request.default_content = "Content unavailable at this time."
89
+ request.request_timeout = 1000 # miliseconds
90
+ request.cache_timeout = 5000 # seconds
91
+ end
92
+
93
+ === Pre-processing returned content
94
+
95
+ You may pre-process the content returned by a request by defining an +on_success+ block. The remote content is passed as a parameter and the return value of the block is used in place of the original content.
96
+
97
+ RailsBridge::ContentBridge.content_request( :server_com ) do |request|
98
+ request.url = "http://server.com:8080/some/path"
99
+ request.params = {:param1=>'a value', :param2=>'another value'}
100
+ request.default_content = "Content unavailable at this time."
101
+ request.request_timeout = 1000 # miliseconds
102
+ request.on_success {|content| JSON.parse(content)}
103
+ end
104
+
105
+ === Caching
106
+
107
+ Content is automatically cached if a cache timeout is defined for the request.
108
+
109
+ RailsBridge::ContentBridge.content_request( :server_com ) do |request|
110
+ request.url = "http://server.com:8080/some/path"
111
+ request.params = {:param1=>'a value', :param2=>'another value'}
112
+ request.default_content = "Content unavailable at this time."
113
+ request.request_timeout = 1000 # miliseconds
114
+ request.cache_timeout = 3600 # seconds
115
+ end
116
+
117
+ content = RailsBridge::ContentBridge.get_server_com
118
+
119
+ The content returned from first request will be cached for 3600 seconds. Subsequent requests issued during that time will return the cached content.
120
+
121
+ To explicitly skip the cache, override the cache_timeout with a value of 0. This will also remove any entry in the cache for this request.
122
+
123
+ content = RailsBridge::ContentBridge.get_server_com( :cache_timeout=>0 )
124
+
125
+ The cache key is derived from the complete URL of the request, including query params, so each request with a unique URL is cached independently.
126
+
127
+ When RailsBridge is loaded in a Rails application, the configured Rails cache is used by default. When loaded outside Rails, ActiveSupport::Cache::MemoryStore is used by default.
128
+
129
+ === One-line requests
130
+
131
+ If desired, all of the above functionality can be achieved in one line:
132
+
133
+ content = RailsBridge::ContentBridge.get_remote_content("http://server.com:8080/some/path?param1=a%20value&param2=another%20value", {:cache_timeout=>3600, :default_content=>"Content Unavailable", :request_timeout=>1000} )
134
+
135
+ === Setting defaults for a group of requests.
136
+
137
+ Default values can be set for a group of requests by sub-classing RailsBridge::ContentBridge and defining them on the class:
138
+
139
+ class TwitterStatusCacher < RailsBridge::ContentBridge
140
+ self.request_timeout = 500 # miliseconds
141
+ self.cache_timeout = 60 # seconds
142
+ self.host = 'api.twitter.com'
143
+ self.path = '/statuses/user_timeline.json'
144
+ self.on_success {|content| JSON.parse(content)}
145
+
146
+ content_request( :hoonpark ) {|r| r.params = {:screen_name => 'hoonpark'}}
147
+ content_request( :soopa ) {|r| r.params = {:screen_name => 'soopa'}}
148
+ end
149
+
150
+ soopa_latest_tweet = TwitterStatusCacher.get_soopa.first
151
+ hoonpark_latest_tweet = TwitterStatusCacher.get_hoonpark.first
152
+
153
+ === Setting global defaults
154
+
155
+ Global default values can be set directly on the RailsBridge::ContentBridge class. They are used by all inheriting sub-classes unless overridden by the sub-class.
156
+
157
+ RailsBridge::ContentBridge.logger = Logger.new(STDOUT)
158
+ RailsBridge::ContentBridge.cache = ActiveSupport::Cache::MemCacheStore(:compress => true)
159
+ RailsBridge::ContentBridge.cache_timeout = 5.minutes
160
+ RailsBridge::ContentBridge.request_timeout = 500 # miliseconds
161
+
162
+ I recommend putting these declaration in an initializer file under config/initializers. For example config/initializers/content_bridge.rb.
163
+
164
+ === Overriding request values on execution
165
+
166
+ All defined values for a request can be overridden at runtime by passing them in as options to the get method:
167
+
168
+ content = RailsBridge::ContentBridge.get_server_com( :params=>{:p1=>'p1'}, :request_timeout=>2000, :cache_timeout=>0 )
169
+
170
+ === Using the provided Rails generator to create ContentBridge classes.
171
+
172
+ A generator is included named 'content_bridge' that automates generation of content bridge classes in your application.
173
+
174
+ eg.
175
+ rails g content_bridge my_content_bridge my_request
176
+
177
+ will create a class named +MyContentBridge+ containing a prototype request definition named +my_request+ and place it under _app/rails_bridge/content_bridges.
178
+
179
+ === Loading your content bridge classes
180
+
181
+ All classes under app/rails_bridge/content_bridges will be loaded automatically during application initialization and reloaded when in running in development.
182
+
183
+ ---
184
+
185
+ == LAYOUT BRIDGE
186
+
187
+ The layout bridge lets you export your Rails application layouts templatized for other languages. A controller is automatically included in your app when the 'rails_bridge' gem is installed. You can access it at:
188
+
189
+ http://app_hostname/rails_bridge/layouts
190
+
191
+ This will show you all of your applications available layouts. To view a layout without content, click the link of one of the layouts. You will see the entire HTML layout with no content. To insert templating content, implement a view for that layout as app/rails_bridge/layouts/<layout_name>/content.html.erb.
192
+
193
+ In that view, define content for your content_for's and provide the template code to be yielded to the main content area of your layout.
194
+
195
+ Also, any partials that exist under app/rails_bridge/views will take precedence over those in your normal views directory. Take advantage of this to override content for layout partials when rendering your templatized layout.
196
+
197
+ ---
198
+
199
+ == TODO
200
+
201
+ * Create a ContentBridge class method to purge the cache.
202
+ * Put the pre-processor block after the cache get so it can assign to variables on each execution.
203
+ * Create a Rake task to export LayoutBridge layouts from the command line.
204
+ * Add test to verify partial precedence and content precedence for layout bridge.
205
+
206
+ == DEVELOPMENT
207
+
208
+ RailsBridge was developed and tested using Ruby v1.9.2 and Rails v3.0.3. It uses the Typhoeus gem to handle all HTTP requests.
209
+
210
+ You may download the source from Github at http://github.com/capitalthought/rails_bridge.
211
+
212
+ You can start an IRB session with the RailsBridge code loaded and initialized by running:
213
+
214
+ script/console
215
+
216
+
217
+ === TESTS
218
+
219
+ RSpec 2.x is used for the Rails Bridge test suite. To run the suite:
220
+
221
+ rake
222
+
223
+ or
224
+ rake spec
225
+
226
+ NOTE: The test suite has an additional dependency on the eventmachine gem to to implement the test HTTP server.
227
+
228
+ ---
229
+
230
+ == LICENSE
231
+
232
+ Copyright 2010 Capital Thought, LLC
233
+
234
+ Licensed under the Apache License, Version 2.0 (the "License");
235
+ you may not use any part of this software or its source code except
236
+ in compliance with the License. You may obtain a copy of the License at
237
+
238
+ http://www.apache.org/licenses/LICENSE-2.0
239
+
240
+ Unless required by applicable law or agreed to in writing, software
241
+ distributed under the License is distributed on an "AS IS" BASIS,
242
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
243
+ See the License for the specific language governing permissions and
244
+ limitations under the License.
data/Rakefile ADDED
@@ -0,0 +1,46 @@
1
+ # encoding: UTF-8
2
+ require 'rubygems'
3
+ begin
4
+ require 'bundler/setup'
5
+ rescue LoadError
6
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ end
8
+
9
+ begin
10
+ require 'jeweler'
11
+ Jeweler::Tasks.new do |gem|
12
+ gem.name = "rails_bridge"
13
+ gem.summary = %Q{Bridges Rails with an external application.}
14
+ gem.description = %Q{Allows for easy embedding of content from a remote HTTP server and exporting of the Rails HTML layout into another template.}
15
+ gem.email = "billdoughty@capitalthought.com"
16
+ gem.homepage = "http://github.com/capitalthought/rails_bridge"
17
+ gem.authors = ["shock"]
18
+ gem.add_development_dependency "typhoeus", "~> 0.2.0"
19
+ gem.add_development_dependency "activesupport", ">= 2.3.8"
20
+ end
21
+ Jeweler::GemcutterTasks.new
22
+ rescue LoadError
23
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
24
+ end
25
+
26
+ require 'rake'
27
+ require 'rake/rdoctask'
28
+
29
+ require 'rspec/core/rake_task'
30
+
31
+ RSpec::Core::RakeTask.new( :spec ) do |t|
32
+ t.pattern = Dir.glob('spec/**/*_spec.rb')
33
+ t.rspec_opts = '--format progress'
34
+ # t.rcov = true
35
+ end
36
+
37
+ task :default => :spec
38
+
39
+ Rake::RDocTask.new(:rdoc) do |rdoc|
40
+ rdoc.rdoc_dir = 'rdoc'
41
+ rdoc.title = 'RailsBridge'
42
+ rdoc.options << '--line-numbers' << '--inline-source'
43
+ rdoc.rdoc_files.include('README.rdoc')
44
+ rdoc.rdoc_files.include('lib/**/*.rb')
45
+ end
46
+