mongodb_logger 0.4.2 → 0.5.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 (94) hide show
  1. data/.gitignore +2 -1
  2. data/.rvmrc +1 -1
  3. data/.travis.yml +5 -4
  4. data/Appraisals +9 -0
  5. data/CHANGELOG.md +20 -3
  6. data/README.md +58 -35
  7. data/Rakefile +33 -96
  8. data/app/assets/javascripts/analytics.js.coffee +5 -4
  9. data/app/assets/javascripts/logs.js.coffee +11 -11
  10. data/app/assets/javascripts/mongodb_logger.js +2 -1
  11. data/app/assets/javascripts/vendors/jquery-1.9.1.min.js +5 -0
  12. data/app/assets/javascripts/vendors/jquery.pjax.min.js +15 -13
  13. data/app/assets/javascripts/vendors/mustache.min.js +10 -0
  14. data/app/assets/stylesheets/layout.css +20 -15
  15. data/app/assets/stylesheets/mongodb_logger.css +0 -3
  16. data/bin/mongodb_logger_web +1 -2
  17. data/features/rails.feature +20 -8
  18. data/features/step_definitions/mongodb_logger_web_steps.rb +2 -3
  19. data/features/step_definitions/rails_application_steps.rb +84 -58
  20. data/features/step_definitions/rake_steps.rb +10 -0
  21. data/features/support/aruba.rb +5 -0
  22. data/features/support/env.rb +11 -5
  23. data/features/support/rails.rb +55 -67
  24. data/gemfiles/rails31.gemfile +8 -0
  25. data/gemfiles/rails32.gemfile +8 -0
  26. data/lib/mongodb_logger.rb +10 -3
  27. data/lib/mongodb_logger/adapters/base.rb +5 -1
  28. data/lib/mongodb_logger/adapters/mongo.rb +17 -13
  29. data/lib/mongodb_logger/adapters/moped.rb +17 -11
  30. data/lib/mongodb_logger/capistrano.rb +8 -0
  31. data/lib/mongodb_logger/logger.rb +13 -26
  32. data/lib/mongodb_logger/rack_middleware.rb +24 -0
  33. data/lib/mongodb_logger/railtie.rb +4 -4
  34. data/lib/mongodb_logger/server.rb +43 -68
  35. data/lib/mongodb_logger/server/helpers.rb +5 -0
  36. data/lib/mongodb_logger/server/{content_for.rb → helpers/content_for.rb} +0 -0
  37. data/lib/mongodb_logger/server/helpers/mustache_helpers.rb +66 -0
  38. data/lib/mongodb_logger/server/{partials.rb → helpers/partials.rb} +0 -0
  39. data/lib/mongodb_logger/server/{sprokets.rb → helpers/sprokets.rb} +4 -4
  40. data/lib/mongodb_logger/server/{view_helpers.rb → helpers/view_helpers.rb} +22 -38
  41. data/lib/mongodb_logger/server/model.rb +4 -0
  42. data/lib/mongodb_logger/server/model/additional_filter.rb +15 -23
  43. data/lib/mongodb_logger/server/model/analytic.rb +24 -32
  44. data/lib/mongodb_logger/server/model/base.rb +21 -0
  45. data/lib/mongodb_logger/server/model/filter.rb +12 -20
  46. data/lib/mongodb_logger/server/mustache/logs/info.rb +15 -0
  47. data/lib/mongodb_logger/server/templates/logs/info.mustache +25 -0
  48. data/lib/mongodb_logger/server/views/layout.erb +28 -26
  49. data/lib/mongodb_logger/server/views/shared/_log.erb +1 -1
  50. data/lib/mongodb_logger/server/views/shared/_tabs.erb +2 -2
  51. data/lib/mongodb_logger/server/views/shared/layout/_mustache.erb +6 -0
  52. data/lib/mongodb_logger/server/views/show_log.erb +2 -2
  53. data/lib/mongodb_logger/server_config.rb +4 -4
  54. data/lib/mongodb_logger/utils/migrate.rb +50 -0
  55. data/lib/mongodb_logger/utils/progressbar.rb +79 -0
  56. data/lib/mongodb_logger/version.rb +1 -1
  57. data/mongodb_logger.gemspec +15 -8
  58. data/{test/config/samples → spec/factories/config}/database.yml +0 -0
  59. data/{test/config/samples → spec/factories/config}/database_no_file_logging.yml +0 -0
  60. data/{test/config/samples → spec/factories/config}/database_replica_set.yml +0 -0
  61. data/{test/config/samples → spec/factories/config}/database_with_auth.yml +0 -0
  62. data/spec/factories/config/database_with_capsize.yml +9 -0
  63. data/{test/config/samples → spec/factories/config}/database_with_collection.yml +0 -0
  64. data/{test/config/samples → spec/factories/config}/database_with_url.yml +0 -0
  65. data/{test/config/samples → spec/factories/config}/mongodb_logger.yml +0 -0
  66. data/{test/config/samples → spec/factories/config}/mongoid.yml +0 -0
  67. data/{test/config/samples → spec/factories/config}/server_config.yml +0 -0
  68. data/spec/javascripts/support/jasmine.yml +1 -5
  69. data/spec/mongodb_logger_spec.rb +257 -0
  70. data/spec/rails_spec/controllers/tests_controller_spec_rails.rb +128 -0
  71. data/spec/rails_spec/spec_helper_rails.rb +13 -0
  72. data/spec/spec_helper.rb +17 -0
  73. data/{test/test_helper.rb → spec/support/mongodb_logger_helper.rb} +44 -63
  74. data/spec/support/mongodb_logger_macros.rb +22 -0
  75. data/spec/support/rails.rb +40 -0
  76. data/spec/utils/migrate_spec.rb +32 -0
  77. data/{lib/tasks → tasks}/mongodb_logger.rake +14 -6
  78. metadata +198 -78
  79. data/SUPPORTED_RAILS_VERSIONS +0 -16
  80. data/TESTING.md +0 -24
  81. data/app/assets/javascripts/vendors/jquery-1.8.3.min.js +0 -2
  82. data/features/support/terminal.rb +0 -95
  83. data/lib/mongodb_logger/server/views/shared/_log_info.erb +0 -27
  84. data/test/Gemfile_tests +0 -9
  85. data/test/active_record.rb +0 -13
  86. data/test/log/.gitkeep +0 -0
  87. data/test/rails.rb +0 -22
  88. data/test/rails/app/controllers/order_controller.rb +0 -23
  89. data/test/rails/test/functional/order_controller_test.rb +0 -116
  90. data/test/rails/test/test_helper.rb +0 -10
  91. data/test/shoulda_macros/log_macros.rb +0 -13
  92. data/test/test.sh +0 -7
  93. data/test/unit/mongodb_logger_replica_test.rb +0 -56
  94. data/test/unit/mongodb_logger_test.rb +0 -307
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  .config
5
5
  .yardoc
6
6
  .project
7
+ *.log
7
8
  Gemfile.lock
8
9
  InstalledFiles
9
10
  _yardoc
@@ -18,4 +19,4 @@ test/version_tmp
18
19
  test/log/*.log
19
20
  tmp
20
21
  .DS_Store
21
- test/Gemfile_tests.lock
22
+ gemfiles/*.lock
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm ruby-1.9.3-p374@mongodb_logger_gems --create
1
+ rvm ruby-2.0.0-p0@mongodb_logger_gems --create
data/.travis.yml CHANGED
@@ -1,15 +1,17 @@
1
1
  language: ruby
2
2
  before_install:
3
- - gem install bundler --pre
4
3
  - "export DISPLAY=:99.0"
5
4
  - "sh -e /etc/init.d/xvfb start"
6
- script: "sh -c 'test/test.sh'"
5
+ before_script:
6
+ - bundle exec rake appraisal:install
7
7
  services:
8
8
  - mongodb
9
9
  rvm:
10
10
  - 1.9.2
11
11
  - 1.9.3
12
+ - 2.0.0
12
13
  - jruby-19mode
14
+ - rbx-19mode
13
15
  - ruby-head
14
16
  - jruby-head
15
17
  notifications:
@@ -18,8 +20,7 @@ branches:
18
20
  only:
19
21
  - master
20
22
  - development
21
- - adapters
22
23
  matrix:
23
24
  allow_failures:
24
25
  - rvm: ruby-head
25
- - rvm: jruby-head
26
+ - rvm: jruby-head
data/Appraisals ADDED
@@ -0,0 +1,9 @@
1
+ appraise "rails31" do
2
+ gem "rails", "~> 3.1.11"
3
+ gem "mongodb_logger", :path => "../"
4
+ end
5
+
6
+ appraise "rails32" do
7
+ gem "rails", "~> 3.2.12"
8
+ gem "mongodb_logger", :path => "../"
9
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## v0.5.0
2
+
3
+ * Moved to new rspec and cucumber testing, fixed testing in travis
4
+ * Added migration task for changed capped collection size ([#49](https://github.com/le0pard/mongodb_logger/issues/49))
5
+ * Moved some part of web ui on mustache templates (now no need load info from server for right info tab)
6
+ * Change dependency from json to multi\_json gem
7
+ * Fix js problems on web page
8
+ * Cleanup and DRY the code
9
+
10
+ ## v0.4.2
11
+
12
+ * Fix problem with session keys (keys with dots is invalid for BSON)
13
+
14
+ ## v0.4.1
15
+
16
+ * One gem for jruby and MRI
17
+
1
18
  ## v0.4.0
2
19
 
3
20
  * Support adapters: mongo and moped
@@ -7,7 +24,7 @@
7
24
 
8
25
  ## v0.3.3
9
26
 
10
- * Mount assets separately or compile it by rake task
27
+ * Mount assets separately or compile it by rake task
11
28
  * Capistrano recipe for compiling assets
12
29
 
13
30
  ## v0.3.2
@@ -54,7 +71,7 @@
54
71
 
55
72
  ## v0.2.2
56
73
 
57
- * Fix set custom collection in config and add tests on it
74
+ * Fix set custom collection in config and add tests on it
58
75
 
59
76
  ## v0.2.1
60
77
 
@@ -62,4 +79,4 @@
62
79
 
63
80
  ## v0.2.0
64
81
 
65
- * Public release
82
+ * Public release
data/README.md CHANGED
@@ -1,19 +1,23 @@
1
- # MongodbLogger [![Build Status](https://secure.travis-ci.org/le0pard/mongodb_logger.png)](http://travis-ci.org/le0pard/mongodb_logger)
1
+ # MongodbLogger
2
+ [![Build Status](https://travis-ci.org/le0pard/mongodb_logger.png)](https://travis-ci.org/le0pard/mongodb_logger)
3
+ [![Code Climate](https://codeclimate.com/github/le0pard/mongodb_logger.png)](https://codeclimate.com/github/le0pard/mongodb_logger)
2
4
 
3
- MongodbLogger is a alternative logger for Rails 3, which log all requests of you application into MongoDB database.
5
+ MongodbLogger is a alternative logger for Rails, which log all requests of you application into MongoDB database.
4
6
  It:
5
7
 
6
- * simple to integrate into existing Rails 3 application;
8
+ * simple to integrate into existing Rails application;
7
9
  * allow to store all logs from web cluster into one scalable storage - MongoDB;
8
10
  * flexible schema of MongoDB allow to store and search any information from logs;
9
11
  * web panel allow filter logs, build graphs using MapReduce by information from logs;
10
12
 
11
- ## Rails 3 support
13
+ ## Rails support
12
14
 
13
- Please note the latest version is compatible with rails 3.1.x or newer.
15
+ Please note the latest version is compatible with rails 3.1.x or newer.
14
16
 
15
17
  For rails 3.0.x latest version 0.2.8.
16
18
 
19
+ Doesn't support the Rails version below 3.
20
+
17
21
  ## Installation
18
22
 
19
23
  1. Add the following to your Gemfile then refresh your dependencies by executing "bundle install" (or just simple "bundle"):
@@ -24,15 +28,15 @@ For rails 3.0.x latest version 0.2.8.
24
28
 
25
29
  gem "mongo"
26
30
  gem "bson_ext"
27
-
28
- or
31
+
32
+ or
29
33
 
30
34
  gem "moped"
31
35
 
32
36
  1. Add the following line to your ApplicationController:
33
37
 
34
38
  include MongodbLogger::Base
35
-
39
+
36
40
  1. For use with Heroku you need to prevent the rails\_log\_stdout plugin from being added by Heroku:
37
41
 
38
42
  mkdir vendor/plugins/rails_log_stdout
@@ -69,7 +73,7 @@ For rails 3.0.x latest version 0.2.8.
69
73
  host: localhost
70
74
  port: 27017
71
75
  replica_set: true
72
-
76
+
73
77
  Also you can use "url" parameter for setup connection to mongodb:
74
78
 
75
79
  development:
@@ -78,7 +82,7 @@ For rails 3.0.x latest version 0.2.8.
78
82
 
79
83
 
80
84
  1. For using with MongoDB Replica Set (more info you can read by this link [http://www.mongodb.org/display/DOCS/Replica+Sets](http://www.mongodb.org/display/DOCS/Replica+Sets)). In config set list of [host, port] in key "hosts":
81
-
85
+
82
86
  development:
83
87
  database: my_app
84
88
  capsize: <%= 10.megabytes %>
@@ -88,30 +92,30 @@ For rails 3.0.x latest version 0.2.8.
88
92
  - - 127.0.0.1
89
93
  - 27018
90
94
  - - 127.0.0.1
91
- - 27019
95
+ - 27019
92
96
 
93
97
  1. For assets pipeline you can generate all js/css file into folder by rake task:
94
98
 
95
99
  rake mongodb_logger:assets:compile[public/assets]
96
-
100
+
97
101
  ## Assets pipeline
98
-
102
+
99
103
  For capistrano possible compile assets by receipt. Add this to config/deploy.rb:
100
104
 
101
105
  require 'mongodb_logger/capistrano'
102
106
  set :mongodb_logger_assets_dir, "public/assets" # where to put mongodb assets
103
107
  after 'deploy:update_code', 'mongodb_logger:precompile'
104
-
108
+
105
109
  Also you can serve assets from rails app. You need just mount it separately:
106
-
110
+
107
111
  mount MongodbLogger::Server.new, :at => "/mongodb", :as => :mongodb
108
112
  mount MongodbLogger::Assets.instance, :at => "/mongodb/assets", :as => :mongodb_assets # assets
109
-
110
-
113
+
114
+
111
115
  ## Usage
112
116
 
113
117
  After success instalation of gem, a new MongoDB document (record) will be created for each request on your application,
114
- by default will record the following information: Runtime, IP Address, Request Time, Controller, Method,
118
+ by default will record the following information: Runtime, IP Address, Request Time, Controller, Method,
115
119
  Action, Params, Application Name and All messages sent to the logger. The structure of the MongoDB document looks like this:
116
120
 
117
121
  {
@@ -151,48 +155,67 @@ For send email or do something on exception you can add callback:
151
155
  # do something with this data, for example - send email (better - by background job)
152
156
  end
153
157
  end
154
-
158
+
155
159
  In this callback send record without "\_id", because logger not wait for insert response from MongoDB.
156
160
 
161
+ ## Migrate to another size of capped collection
162
+
163
+ If you need change capper collection size, you should change the "capsize" key in mongodb\_config and run this task for migration:
164
+
165
+ rake mongodb_logger:migrate
166
+
167
+ ## Rack Middleware
168
+
169
+ If you want use MongodbLogger in Rack app which is mounted to your Rails app, you can try to use rack middleware:
170
+
171
+ use MongodbLogger::RackMiddleware
172
+
173
+ ## Rails::Engine
174
+
175
+ If you want use MongodbLogger with some of Rails::Engine, you can do this (example for Spree):
176
+
177
+ Spree::BaseController.send :include, MongodbLogger::Base
178
+ Spree::Admin::BaseController.send :include, MongodbLogger::Base # for admin
179
+
157
180
  ## The Front End
158
181
 
159
- To setup web interface in you Rails application, first of all create autoload file in you Rails application
160
-
182
+ To setup web interface in you Rails application, first of all create autoload file in you Rails application
183
+
161
184
  File: you\_rails\_app/config/initializers/mongodb\_logger.rb (example)
162
-
185
+
163
186
  require 'mongodb_logger/server' # required
164
187
  # this secure you web interface by basic auth, but you can skip this, if you no need this
165
188
  MongodbLogger::Server.use Rack::Auth::Basic do |username, password|
166
189
  [username, password] == ['admin', 'password']
167
190
  end
168
-
191
+
169
192
  and just mount MongodbLogger::Server in rails routes:
170
193
 
171
194
  File: you\_rails\_app/config/routes.rb
172
-
195
+
173
196
  mount MongodbLogger::Server.new, :at => "/mongodb"
174
-
197
+
175
198
  Now you can see web interface by url "http://localhost:3000/mongodb"
176
199
 
177
200
  If you've installed MongodbLogger as a gem and want running the front end without Rails application, you can do it by this command:
178
201
 
179
202
  mongodb_logger_web config.yml
180
-
203
+
181
204
  where config.yml is config, similar to config of Rails apps, but without Rails.env. Example:
182
-
205
+
183
206
  database: app_logs_dev
184
207
  host: localhost
185
208
  port: 27017
186
209
  collection: development_log # set for see development logs
187
-
210
+
188
211
  parameter "collection" should be set, if your set custom for your Rails application or start this front end not for production
189
- enviroment (by default taken "production\_log" collection, in Rails application gem generate "#{Rails.env}\_log" collection,
212
+ enviroment (by default taken "production\_log" collection, in Rails application gem generate "#{Rails.env}\_log" collection,
190
213
  if it is not defined in config).
191
214
 
192
215
  It's a thin layer around rackup so it's configurable as well:
193
216
 
194
217
  mongodb_logger_web config.yml -p 8282
195
-
218
+
196
219
  ### Passenger, Unicorn, Thin, etc.
197
220
 
198
221
  Using Passenger, Unicorn, Thin, etc? MongodbLogger ships with a `config.ru` you can use. See guide:
@@ -207,17 +230,17 @@ Don't forget setup MONGODBLOGGERCONFIG env variable, which provide information a
207
230
  MONGODBLOGGERCONFIG=examples/server_config.yml unicorn
208
231
 
209
232
  ## Demo Application with MongodbLogger
210
-
233
+
211
234
  Demo: [http://demo-mongodb-logger.catware.org/](http://demo-mongodb-logger.catware.org/)
212
-
235
+
213
236
  Demo Sources: [https://github.com/le0pard/mongodb_logger_example_heroku](https://github.com/le0pard/mongodb_logger_example_heroku)
214
-
237
+
215
238
 
216
239
  ## Querying via the Rails console
217
240
 
218
241
  And now, for a couple quick examples on getting ahold of this log data...
219
242
  First, here's how to get a handle on the MongoDB from within a Rails console:
220
-
243
+
221
244
  >> db = Rails.logger.mongo_adapter.connection
222
245
  => #<Mongo::DB:0x007fdc7c65adc8 @name="monkey_logs_dev" ... >
223
246
  >> collection = Rails.logger.mongo_adapter.collection
@@ -242,7 +265,7 @@ Demo Sources: [https://github.com/le0pard/mongodb_logger_example_heroku](https:/
242
265
  Find all requests with an exception that contains "RoutingError" in the message or stack trace:
243
266
 
244
267
  >> collection.find({"messages.error" => /RoutingError/})
245
-
268
+
246
269
  Find all requests with errors:
247
270
 
248
271
  >> collection.find({"is_exception" => true})
data/Rakefile CHANGED
@@ -5,132 +5,69 @@ require 'bundler'
5
5
  Bundler.require
6
6
  require 'rake'
7
7
  require 'rake/testtask'
8
- require 'cucumber'
9
- require 'cucumber/rake/task'
10
-
11
- require "bundler/gem_tasks"
8
+ require 'bundler/gem_tasks'
9
+ require 'appraisal'
10
+ require 'rspec/core/rake_task'
11
+ begin
12
+ require 'cucumber/rake/task'
13
+ rescue LoadError
14
+ $stderr.puts "Please install cucumber: `gem install cucumber`"
15
+ exit 1
16
+ end
12
17
 
13
18
  #########################################
14
19
  ### TESTS
15
20
  #########################################
16
21
 
17
- desc 'Default: run unit tests.'
18
- task :default => [:test]
19
- #task :default => [:test, "cucumber:rails:all"]
22
+ desc 'Default: run tests'
23
+ task :default => [:spec, "mongodb_logger:tests"]
24
+
25
+ namespace :mongodb_logger do
26
+ task :tests do
27
+ exec 'rake appraisal cucumber '\
28
+ '&& FEATURE=features/mongodb_logger_web.feature rake cucumber '\
29
+ end
30
+ end
31
+ desc "run specs"
32
+ task :spec do
33
+ RSpec::Core::RakeTask.new
34
+ end
20
35
 
21
36
  desc "Clean out the tmp directory"
22
37
  task :clean do
23
- exec "rm -rf tmp"
38
+ exec "rm -rf tmp/*"
24
39
  end
25
40
 
26
- desc 'Test unit.'
41
+ desc 'Test unit'
27
42
  Rake::TestTask.new(:test) do |test|
28
- test.libs << 'lib' << 'test'
43
+ test.libs << 'lib'
29
44
  test.test_files = ['test/unit/mongodb_logger_test.rb']
30
45
  test.verbose = true
31
46
  end
32
47
 
33
48
  namespace :test do
34
-
35
49
  desc "Run replica set tests (not for CI)"
36
50
  Rake::TestTask.new(:replica_set) do |test|
37
- test.libs << 'lib' << 'test'
51
+ test.libs << 'lib'
38
52
  test.pattern = 'test/unit/mongodb_logger_replica_test.rb'
39
53
  test.verbose = true
40
54
  end
41
-
42
55
  end
43
56
 
57
+ def cucumber_opts
58
+ opts = "--tags ~@wip --format progress "
44
59
 
45
- GEM_ROOT = File.dirname(__FILE__).freeze
46
- LOCAL_GEM_ROOT = File.join(GEM_ROOT, 'tmp', 'local_gems').freeze
47
-
48
- if ENV['CI']
49
- # for ci testing only major rails versions
50
- if 'java' == RUBY_PLATFORM
51
- RAILS_VERSIONS = ['3.1.6', '3.2.9']
52
- else
53
- RAILS_VERSIONS = ['3.1.6', '3.2.9']
54
- end
55
- else
56
- RAILS_VERSIONS = IO.read('SUPPORTED_RAILS_VERSIONS').strip.split("\n")
57
- end
60
+ opts << ENV["FEATURE"] and return if ENV["FEATURE"]
58
61
 
59
-
60
- LOCAL_GEMS = [['sqlite3', nil], ['shoulda', nil], ["rspec", nil], ["mocha", nil], ["cucumber", nil], ["bundler", "1.0.21"]] +
61
- RAILS_VERSIONS.collect { |version| ['rails', version] }
62
-
63
- desc "Vendor test gems: Run this once to prepare your test environment"
64
- task :vendor_test_gems do
65
- old_gem_path = ENV['GEM_PATH']
66
- old_gem_home = ENV['GEM_HOME']
67
- ENV['GEM_PATH'] = LOCAL_GEM_ROOT
68
- ENV['GEM_HOME'] = LOCAL_GEM_ROOT
69
- LOCAL_GEMS.each do |gem_name, version|
70
- gem_file_pattern = [gem_name, version || '*'].compact.join('-')
71
- version_option = version ? "-v #{version}" : ''
72
- pattern = File.join(LOCAL_GEM_ROOT, 'gems', "#{gem_file_pattern}")
73
- existing = Dir.glob(pattern).first
74
- unless existing
75
- command = "gem install -i #{LOCAL_GEM_ROOT} --no-ri --no-rdoc --backtrace #{version_option} #{gem_name}"
76
- puts "Vendoring #{gem_file_pattern}..."
77
- unless system("#{command} 2>&1")
78
- puts "Command failed: #{command}"
79
- exit(1)
80
- end
81
- end
62
+ case ENV["BUNDLE_GEMFILE"]
63
+ when /rails/
64
+ opts << "features/rails.feature"
82
65
  end
83
- ENV['GEM_PATH'] = old_gem_path
84
- ENV['GEM_HOME'] = old_gem_home
85
66
  end
86
67
 
87
68
  Cucumber::Rake::Task.new(:cucumber) do |t|
88
69
  t.fork = true
89
- t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'progress')]
90
- end
91
-
92
- task :cucumber => [:vendor_test_gems]
93
-
94
- def run_rails_cucumbr_task(version, additional_cucumber_args)
95
- puts "Testing Rails #{version}"
96
- if version.empty?
97
- raise "No Rails version specified - make sure ENV['RAILS_VERSION'] is set, e.g. with `rake cucumber:rails:all`"
98
- end
99
- ENV['RAILS_VERSION'] = version
100
- system("cucumber --format #{ENV['CUCUMBER_FORMAT'] || 'progress'} #{additional_cucumber_args} features/rails.feature")
101
- end
102
-
103
- def define_rails_cucumber_tasks(additional_cucumber_args = '')
104
- namespace :rails do
105
- RAILS_VERSIONS.each do |version|
106
- desc "Test integration of the gem with Rails #{version}"
107
- task version => [:vendor_test_gems] do
108
- exit 1 unless run_rails_cucumbr_task(version, additional_cucumber_args)
109
- end
110
- end
111
-
112
- desc "Test integration of the gem with all Rails versions"
113
- task :all do
114
- results = RAILS_VERSIONS.map do |version|
115
- run_rails_cucumbr_task(version, additional_cucumber_args)
116
- end
117
-
118
- exit 1 unless results.all?
119
- end
120
- end
121
- end
122
-
123
- def define_web_cucumber_tasks(additional_cucumber_args = '')
124
- desc "Test web of the gem"
125
- task :web do
126
- puts "Testing Web"
127
- system("cucumber --format #{ENV['CUCUMBER_FORMAT'] || 'progress'} #{additional_cucumber_args} features/mongodb_logger_web.feature")
128
- end
129
- end
130
-
131
- namespace :cucumber do
132
- define_rails_cucumber_tasks
133
- define_web_cucumber_tasks
70
+ t.cucumber_opts = cucumber_opts
134
71
  end
135
72
 
136
73
  begin