mongo_session_store 2.0.0 → 3.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +43 -0
  5. data/.travis.yml +37 -0
  6. data/CHANGELOG.md +49 -0
  7. data/Dangerfile +1 -0
  8. data/Gemfile +3 -0
  9. data/LICENSE +23 -0
  10. data/README.md +106 -43
  11. data/Rakefile +90 -0
  12. data/gemfiles/rails-4.0-mongo.gemfile +9 -0
  13. data/gemfiles/rails-4.0-mongoid.gemfile +9 -0
  14. data/gemfiles/rails-4.1-mongo.gemfile +9 -0
  15. data/gemfiles/rails-4.1-mongoid.gemfile +9 -0
  16. data/gemfiles/rails-4.2-mongo.gemfile +9 -0
  17. data/gemfiles/rails-4.2-mongoid.gemfile +9 -0
  18. data/lib/mongo_session_store.rb +27 -1
  19. data/lib/mongo_session_store/mongo_store.rb +102 -0
  20. data/lib/mongo_session_store/mongo_store_base.rb +65 -0
  21. data/lib/mongo_session_store/mongoid_store.rb +52 -0
  22. data/lib/mongo_session_store/version.rb +3 -0
  23. data/mongo_session_store.gemspec +25 -0
  24. data/perf/benchmark.rb +101 -0
  25. data/spec/.rubocop.yml +4 -0
  26. data/spec/integrations/devise_spec.rb +109 -0
  27. data/spec/lib/mongo_session_store/mongo_store/session_spec.rb +247 -0
  28. data/spec/lib/mongo_session_store/mongo_store_base_spec.rb +269 -0
  29. data/spec/lib/mongo_session_store/mongo_store_spec.rb +13 -0
  30. data/spec/lib/mongo_session_store/mongoid_store/session_spec.rb +82 -0
  31. data/spec/lib/mongo_session_store/mongoid_store_spec.rb +13 -0
  32. data/spec/lib/mongo_session_store_spec.rb +64 -0
  33. data/spec/rails_helper.rb +19 -0
  34. data/spec/spec_helper.rb +53 -0
  35. data/spec/support/apps/rails_4.0_app/Rakefile +6 -0
  36. data/spec/support/apps/rails_4.0_app/app/controllers/application_controller.rb +5 -0
  37. data/spec/support/apps/rails_4.0_app/app/controllers/home_controller.rb +4 -0
  38. data/spec/support/apps/rails_4.0_app/app/models/user.rb +5 -0
  39. data/spec/support/apps/rails_4.0_app/app/views/home/index.html.erb +10 -0
  40. data/spec/support/apps/rails_4.0_app/app/views/layouts/application.html.erb +17 -0
  41. data/spec/support/apps/rails_4.0_app/bin/bundle +3 -0
  42. data/spec/support/apps/rails_4.0_app/bin/rails +4 -0
  43. data/spec/support/apps/rails_4.0_app/bin/rake +4 -0
  44. data/spec/support/apps/rails_4.0_app/config.ru +4 -0
  45. data/spec/support/apps/rails_4.0_app/config/application.rb +11 -0
  46. data/spec/support/apps/rails_4.0_app/config/boot.rb +4 -0
  47. data/spec/support/apps/rails_4.0_app/config/database.yml +11 -0
  48. data/spec/support/apps/rails_4.0_app/config/environment.rb +5 -0
  49. data/spec/support/apps/rails_4.0_app/config/environments/development.rb +12 -0
  50. data/spec/support/apps/rails_4.0_app/config/environments/test.rb +19 -0
  51. data/spec/support/apps/rails_4.0_app/config/initializers/devise.rb +254 -0
  52. data/spec/support/apps/rails_4.0_app/config/initializers/secret_token.rb +12 -0
  53. data/spec/support/apps/rails_4.0_app/config/initializers/session_store.rb +1 -0
  54. data/spec/support/apps/rails_4.0_app/config/locales/devise.en.yml +59 -0
  55. data/spec/support/apps/rails_4.0_app/config/locales/en.yml +23 -0
  56. data/spec/support/apps/rails_4.0_app/config/mongo.yml +11 -0
  57. data/spec/support/apps/rails_4.0_app/config/mongoid.yml +13 -0
  58. data/spec/support/apps/rails_4.0_app/config/routes.rb +4 -0
  59. data/spec/support/apps/rails_4.0_app/db/migrate/20140301171212_add_devise_users.rb +11 -0
  60. data/spec/support/apps/rails_4.0_app/db/schema.rb +25 -0
  61. data/spec/support/apps/rails_4.0_app/db/seeds.rb +7 -0
  62. data/spec/support/apps/rails_4.0_app/lib/assets/.keep +0 -0
  63. data/spec/support/apps/rails_4.0_app/lib/tasks/.keep +0 -0
  64. data/spec/support/apps/rails_4.0_app/log/.keep +0 -0
  65. data/spec/support/apps/rails_4.0_app/public/404.html +58 -0
  66. data/spec/support/apps/rails_4.0_app/public/422.html +58 -0
  67. data/spec/support/apps/rails_4.0_app/public/500.html +57 -0
  68. data/spec/support/apps/rails_4.0_app/public/favicon.ico +0 -0
  69. data/spec/support/apps/rails_4.0_app/public/robots.txt +5 -0
  70. data/spec/support/apps/rails_4.1_app/Rakefile +3 -0
  71. data/spec/support/apps/rails_4.1_app/app/controllers/application_controller.rb +5 -0
  72. data/spec/support/apps/rails_4.1_app/app/controllers/home_controller.rb +4 -0
  73. data/spec/support/apps/rails_4.1_app/app/models/user.rb +5 -0
  74. data/spec/support/apps/rails_4.1_app/app/views/home/index.html.erb +10 -0
  75. data/spec/support/apps/rails_4.1_app/app/views/layouts/application.html.erb +17 -0
  76. data/spec/support/apps/rails_4.1_app/bin/bundle +3 -0
  77. data/spec/support/apps/rails_4.1_app/bin/rails +4 -0
  78. data/spec/support/apps/rails_4.1_app/bin/rake +4 -0
  79. data/spec/support/apps/rails_4.1_app/config.ru +2 -0
  80. data/spec/support/apps/rails_4.1_app/config/application.rb +11 -0
  81. data/spec/support/apps/rails_4.1_app/config/boot.rb +4 -0
  82. data/spec/support/apps/rails_4.1_app/config/database.yml +11 -0
  83. data/spec/support/apps/rails_4.1_app/config/environment.rb +5 -0
  84. data/spec/support/apps/rails_4.1_app/config/environments/development.rb +12 -0
  85. data/spec/support/apps/rails_4.1_app/config/environments/test.rb +19 -0
  86. data/spec/support/apps/rails_4.1_app/config/initializers/devise.rb +254 -0
  87. data/spec/support/apps/rails_4.1_app/config/initializers/session_store.rb +1 -0
  88. data/spec/support/apps/rails_4.1_app/config/locales/devise.en.yml +59 -0
  89. data/spec/support/apps/rails_4.1_app/config/locales/en.yml +23 -0
  90. data/spec/support/apps/rails_4.1_app/config/mongo.yml +11 -0
  91. data/spec/support/apps/rails_4.1_app/config/mongoid.yml +13 -0
  92. data/spec/support/apps/rails_4.1_app/config/routes.rb +4 -0
  93. data/spec/support/apps/rails_4.1_app/config/secrets.yml +22 -0
  94. data/spec/support/apps/rails_4.1_app/db/migrate/20140301171212_add_devise_users.rb +11 -0
  95. data/spec/support/apps/rails_4.1_app/db/schema.rb +25 -0
  96. data/spec/support/apps/rails_4.1_app/db/seeds.rb +7 -0
  97. data/spec/support/apps/rails_4.1_app/lib/assets/.keep +0 -0
  98. data/spec/support/apps/rails_4.1_app/lib/tasks/.keep +0 -0
  99. data/spec/support/apps/rails_4.1_app/log/.keep +0 -0
  100. data/spec/support/apps/rails_4.1_app/public/404.html +67 -0
  101. data/spec/support/apps/rails_4.1_app/public/422.html +67 -0
  102. data/spec/support/apps/rails_4.1_app/public/500.html +66 -0
  103. data/spec/support/apps/rails_4.1_app/public/favicon.ico +0 -0
  104. data/spec/support/apps/rails_4.1_app/public/robots.txt +5 -0
  105. data/spec/support/apps/rails_4.2_app/Rakefile +2 -0
  106. data/spec/support/apps/rails_4.2_app/app/controllers/application_controller.rb +5 -0
  107. data/spec/support/apps/rails_4.2_app/app/controllers/home_controller.rb +4 -0
  108. data/spec/support/apps/rails_4.2_app/app/models/user.rb +5 -0
  109. data/spec/support/apps/rails_4.2_app/app/views/home/index.html.erb +10 -0
  110. data/spec/support/apps/rails_4.2_app/app/views/layouts/application.html.erb +15 -0
  111. data/spec/support/apps/rails_4.2_app/bin/bundle +3 -0
  112. data/spec/support/apps/rails_4.2_app/bin/rails +8 -0
  113. data/spec/support/apps/rails_4.2_app/bin/rake +4 -0
  114. data/spec/support/apps/rails_4.2_app/config.ru +4 -0
  115. data/spec/support/apps/rails_4.2_app/config/application.rb +11 -0
  116. data/spec/support/apps/rails_4.2_app/config/boot.rb +3 -0
  117. data/spec/support/apps/rails_4.2_app/config/database.yml +11 -0
  118. data/spec/support/apps/rails_4.2_app/config/environment.rb +5 -0
  119. data/spec/support/apps/rails_4.2_app/config/environments/development.rb +12 -0
  120. data/spec/support/apps/rails_4.2_app/config/environments/test.rb +19 -0
  121. data/spec/support/apps/rails_4.2_app/config/initializers/devise.rb +254 -0
  122. data/spec/support/apps/rails_4.2_app/config/initializers/session_store.rb +1 -0
  123. data/spec/support/apps/rails_4.2_app/config/locales/en.yml +23 -0
  124. data/spec/support/apps/rails_4.2_app/config/mongo.yml +11 -0
  125. data/spec/support/apps/rails_4.2_app/config/mongoid.yml +13 -0
  126. data/spec/support/apps/rails_4.2_app/config/routes.rb +4 -0
  127. data/spec/support/apps/rails_4.2_app/config/secrets.yml +22 -0
  128. data/spec/support/apps/rails_4.2_app/db/migrate/20140301171212_add_devise_users.rb +11 -0
  129. data/spec/support/apps/rails_4.2_app/db/schema.rb +25 -0
  130. data/spec/support/apps/rails_4.2_app/db/seeds.rb +7 -0
  131. data/spec/support/helpers/session_id_helper.rb +5 -0
  132. data/spec/support/helpers/test_database_helper.rb +22 -0
  133. metadata +360 -92
  134. data/lib/mongo_session_store/mongo_mapper.rb +0 -60
  135. data/lib/mongo_session_store/mongoid.rb +0 -59
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 51de0786fae5ce817ce7a6560c1c1e7155bb6e61
4
+ data.tar.gz: 755e1e50213bd4dd4920f606e1b900cab0fe4aba
5
+ SHA512:
6
+ metadata.gz: 1112e027b5b5591b44fdbad4e19c216c71aad8aa5657d018384cd69c90a1ec3860181f66fac6c1182c10f63cac2d91086effba229df907a2178f8005682644a5
7
+ data.tar.gz: c34f5a35cc48c92e385d8ead77fa875b7a345a3752d64d409206bb2080cff74c71cf4d18247dfa1b8ac6a9942bd4b81dbe6f37c532f9b1b99a690df89fe814c3
@@ -0,0 +1,8 @@
1
+ /doc
2
+ /coverage
3
+ Gemfile.lock
4
+ gemfiles/*.lock
5
+ spec/support/apps/rails_*/tmp/
6
+ spec/support/apps/rails_*/db/*.sqlite3
7
+ *.gem
8
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,43 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.0
3
+ Include:
4
+ - "Gemfile"
5
+ Exclude:
6
+ - "gemfiles/vendor/**/*"
7
+ - "perf/benchmark.rb"
8
+ - "spec/support/apps/**/*"
9
+ - "tmp/**/*"
10
+ - "vendor/**/*"
11
+ DisplayCopNames: true
12
+ UseCache: true
13
+ CacheRootDirectory: ./tmp
14
+
15
+ Style/Documentation:
16
+ Enabled: false
17
+
18
+ Style/StringLiterals:
19
+ EnforcedStyle: double_quotes
20
+
21
+ Style/StringLiteralsInInterpolation:
22
+ EnforcedStyle: double_quotes
23
+
24
+ Style/AlignParameters:
25
+ EnforcedStyle: with_fixed_indentation
26
+
27
+ Style/MultilineOperationIndentation:
28
+ EnforcedStyle: indented
29
+
30
+ Style/AlignHash:
31
+ EnforcedLastArgumentHashStyle: ignore_implicit
32
+
33
+ Style/HashSyntax:
34
+ EnforcedStyle: hash_rockets
35
+
36
+ Style/IndentArray:
37
+ EnforcedStyle: consistent
38
+
39
+ Style/FormatString:
40
+ EnforcedStyle: sprintf
41
+
42
+ Metrics/MethodLength:
43
+ Max: 15
@@ -0,0 +1,37 @@
1
+ language: ruby
2
+
3
+ cache: bundler
4
+
5
+ rvm:
6
+ - 2.3.1
7
+ - 2.1.10
8
+
9
+ gemfile:
10
+ - gemfiles/rails-4.0-mongo.gemfile
11
+ - gemfiles/rails-4.0-mongoid.gemfile
12
+ - gemfiles/rails-4.1-mongo.gemfile
13
+ - gemfiles/rails-4.1-mongoid.gemfile
14
+ - gemfiles/rails-4.2-mongo.gemfile
15
+ - gemfiles/rails-4.2-mongoid.gemfile
16
+
17
+ matrix:
18
+ fast_finish: true
19
+ include:
20
+ - rvm: 2.3.1
21
+ gemfile: gemfiles/rails-4.2-mongo.gemfile
22
+ script: bundle exec rubocop
23
+ - rvm: 2.3.1
24
+ gemfile: gemfiles/rails-4.2-mongo.gemfile
25
+ script: bundle exec danger
26
+
27
+ services: mongodb
28
+
29
+ addons:
30
+ apt:
31
+ sources:
32
+ - mongodb-3.2-precise
33
+ packages:
34
+ - mongodb-org-server
35
+
36
+ script:
37
+ - bundle exec rake test
@@ -0,0 +1,49 @@
1
+ # Changelog
2
+
3
+ ## 3.0.0 (unreleased)
4
+
5
+ * Drop Ruby 1.8, 1.9 and 2.0 support - [@tombruijn](https://github.com/tombruijn).
6
+ * Drop explicit MongoMapper support - [@tombruijn](https://github.com/tombruijn).
7
+ * Drop MongoDB version 2 support - [@brianhempel](https://github.com/brianhempel).
8
+ * Support MongoDB version 3 - [@brianhempel](https://github.com/brianhempel).
9
+ * Update Mongo Ruby driver support for more recent versions - [@brianhempel](https://github.com/brianhempel), [@tombruijn](https://github.com/tombruijn).
10
+ * Update Mongoid support for more recent versions - [@brianhempel](https://github.com/brianhempel), [@tombruijn](https://github.com/tombruijn).
11
+ * Add Mongo Ruby driver session store support - [@brianhempel](https://github.com/brianhempel).
12
+ * Add Rails 4 support - [@brianhempel](https://github.com/brianhempel).
13
+ * Remove explicit Rails 3 support - [@tombruijn](https://github.com/tombruijn).
14
+ * Move session data packing and unpacking to session models. This allows queried documents to unpack session data themselves - [@tombruijn](https://github.com/tombruijn).
15
+ * Test more internal code - [@tombruijn](https://github.com/tombruijn).
16
+ * Allow for easier custom classes and expanded behavior of Mongoid and Mongo session stores - [@tombruijn](https://github.com/tombruijn).
17
+ * [#24](https://github.com/mongoid/mongo_session_store/pull/24): Add Danger, PR linter - [@tombruijn](https://github.com/tombruijn), [@dblock](https://github.com/dblock).
18
+ * [#27](https://github.com/mongoid/mongo_session_store/pull/27): Run tests against Ruby 2.3.1 and MongoDB 3.2 only - [@dblock](https://github.com/dblock).
19
+ * [#29](https://github.com/mongoid/mongo_session_store/pull/29): Use rails default session id generation - [@tombruijn](https://github.com/tombruijn).
20
+ * Your contribution here.
21
+
22
+ ## 2.0.0
23
+
24
+ * Fix MongoMapper indexes - [@nmerouze](https://github.com/nmerouze).
25
+ * Add Rails 3 support for Mongoid - [@nmerouze](https://github.com/nmerouze).
26
+ * Add Rails 3 support for MongoMapper - [@nmerouze](https://github.com/nmerouze).
27
+ * Support MongoMapper 0.7.5 - [@hsbt](https://github.com/hsbt).
28
+ * Fix issue where ActionPack expects `set_session` to return the (new) session_id when session is created successfully - [@memuller](https://github.com/memuller).
29
+
30
+ ## 1.1.2
31
+
32
+ * Generate a new session document if the current session document doesn't exist - [@shingara](https://github.com/shingara).
33
+
34
+ ## 1.1.1
35
+
36
+ * Fix `updated_at` index for MongoMapper session documents - [@nmerouze](https://github.com/nmerouze).
37
+
38
+ ## 1.1.0
39
+
40
+ * Add Mongoid support - [@nmerouze](https://github.com/nmerouze).
41
+
42
+ ## 1.0.1
43
+
44
+ * Add gemspec and specify actionpack dependency - [@nmerouze](https://github.com/nmerouze).
45
+
46
+ ## 1.0.0
47
+
48
+ * Initial version of the gem - [@tpitale](https://github.com/tpitale), [@compressed](https://github.com/compressed).
49
+ * MongoMapper session store support - [@tpitale](https://github.com/tpitale), [@compressed](https://github.com/compressed).
@@ -0,0 +1 @@
1
+ danger.import_dangerfile(gem: "mongoid-danger")
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2016 Tom de Bruijn
2
+ Copyright (c) 2011-2015 Brian Hempel
3
+ Copyright (c) 2010 Nicolas Mérouze
4
+ Copyright (c) 2009 Chris Brickley
5
+ Copyright (c) 2009 Tony Pitale
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
8
+ this software and associated documentation files (the "Software"), to deal in
9
+ the Software without restriction, including without limitation the rights to
10
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
11
+ of the Software, and to permit persons to whom the Software is furnished to do
12
+ so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
data/README.md CHANGED
@@ -1,74 +1,137 @@
1
1
  # MongoSessionStore
2
2
 
3
+ [![Build Status](https://travis-ci.org/mongoid/mongo_session_store.svg?branch=master)](https://travis-ci.org/mongoid/mongo_session_store)
4
+ [![Gem Version](https://badge.fury.io/rb/mongo_session_store.svg)](http://badge.fury.io/rb/mongo_session_store)
5
+ [![Code Climate](https://codeclimate.com/github/mongoid/mongo_session_store/badges/gpa.svg)](https://codeclimate.com/github/mongoid/mongo_session_store)
6
+
3
7
  ## Description
4
8
 
5
- This is a fork of the DataMapper session store, modified to work with MongoMapper and Mongoid.
9
+ MongoSessionStore is a [Rails][rails]-compatible session store for
10
+ [MongoDB][mongodb] using either [Mongoid][mongoid] or the [MongoDB Ruby
11
+ Driver][mongo]. It also allows for custom Mongo session store that works with
12
+ any (or no!) Mongo ODM.
13
+
14
+ MongoSessionStore version 3 is compatible with Rails 4.0 through 4.2. For Rails
15
+ 3 support please check out issue [#17][issue-rails3] for options and let us
16
+ know if you need support.
6
17
 
7
18
  ## Installation
8
19
 
9
- The current version is only compatible with Rails 3
20
+ Add the `mongo_session_store` gem to your `Gemfile`.
21
+ Use either the `mongo` or `mongoid` gems in combination with this gem.
22
+
23
+ ```ruby
24
+ # Gemfile
25
+
26
+ gem "mongoid"
27
+ # or gem "mongo"
28
+ gem "mongo_session_store"
29
+ ```
30
+
31
+ Configure the session store in the session_store initializer in your Rails
32
+ project.
33
+
34
+ ```ruby
35
+ # config/initializers/session_store.rb
36
+
37
+ # Mongoid
38
+ MyApp::Application.config.session_store :mongoid_store
39
+
40
+ # MongoDB Ruby Driver/anything else
41
+ MongoStore::Session.database = Mongo::Client.new(["127.0.0.1:27017"], database: "my_app_development")
42
+ MyApp::Application.config.session_store :mongo_store
43
+ ```
44
+
45
+ ## Configuration
46
+
47
+ By default, the sessions will be stored in the "sessions" collection in
48
+ MongoDB. If you want to use a different collection, you can set that in the
49
+ session_store initializer.
10
50
 
11
- gem install mongo_session_store
51
+ ```ruby
52
+ # config/initializers/session_store.rb
53
+ MongoSessionStore.collection_name = "client_sessions"
54
+ ```
12
55
 
13
- However if you want to use it with Rails 2.3.x, you just have to install the latest 1.x version
56
+ ## Usage
14
57
 
15
- gem install mongo_session_store --version=1.1.2
58
+ By default nothing has to be done outside the [installation](#installation) of
59
+ the gem.
16
60
 
17
- ## Usage with MongoMapper
61
+ It's possible to query your sessions.
18
62
 
19
- In your Gemfile:
63
+ ```ruby
64
+ # Mongoid
65
+ MongoidStore::Session.where(:updated_at.gt => 2.days.ago)
20
66
 
21
- gem "mongo_mapper-rails3", :require => "mongo_mapper"
22
- gem "mongo_session_store"
67
+ # MongoDB Ruby Driver
68
+ MongoStore::Session.where("updated_at" => { "$gt" => 2.days.ago })
69
+ ```
23
70
 
24
- In the session_store initializer (config/initializers/session_store.rb):
71
+ ## Development
25
72
 
26
- require "mongo_session_store/mongo_mapper"
27
- ActionController::Base.session_store = :mongo_mapper_store
73
+ ### Testing
28
74
 
29
- ## Usage with Mongoid
75
+ To run the tests for a specific store. You must first set a `BUNDLE_GEMFILE` in
76
+ the environment.
30
77
 
31
- In your Gemfile:
78
+ ```sh
79
+ bundle exec rake
80
+ ```
32
81
 
33
- gem "mongoid"
34
- gem "mongo_session_store"
82
+ Examples:
35
83
 
36
- In the session_store initializer (config/initializers/session_store.rb):
84
+ ```sh
85
+ BUNDLE_GEMFILE=gemfiles/rails-4.0-mongo.gemfile bundle exec rake
86
+ BUNDLE_GEMFILE=gemfiles/rails-4.0-mongoid.gemfile bundle exec rake
87
+ BUNDLE_GEMFILE=gemfiles/rails-4.1-mongo.gemfile bundle exec rake
88
+ BUNDLE_GEMFILE=gemfiles/rails-4.1-mongoid.gemfile bundle exec rake
89
+ BUNDLE_GEMFILE=gemfiles/rails-4.2-mongo.gemfile bundle exec rake
90
+ BUNDLE_GEMFILE=gemfiles/rails-4.2-mongoid.gemfile bundle exec rake
91
+ ```
37
92
 
38
- require "mongo_session_store/mongoid"
39
- ActionController::Base.session_store = :mongoid_store
93
+ ### Performance benchmark
94
+
95
+ The repository includes a performance benchmark. It runs against all available
96
+ included stores and outputs the results.
97
+
98
+ ```
99
+ bundle exec ruby perf/benchmark.rb
100
+ ```
101
+
102
+ ### Releases
103
+
104
+ To create a new release checkout the `master` branch and make sure it's in the
105
+ right state to release. Run the `release` Rake task and follow the
106
+ instructions.
107
+
108
+ ```
109
+ bundle exec rake release
110
+ ```
40
111
 
41
112
  ## Contributors
42
113
 
114
+ MongoSessionStore started as a fork of the DataMapper session store, modified
115
+ to work with MongoMapper, Mongoid and the Mongo Ruby Driver.
116
+
117
+ Much thanks to all contributors:
118
+
43
119
  * Nicolas Mérouze
44
120
  * Chris Brickley
45
121
  * Tony Pitale
46
122
  * Nicola Racco
47
123
  * Matt Powell
124
+ * Ryan Fitzgerald
125
+ * Brian Hempel
126
+ * Tom de Bruijn
48
127
 
49
128
  ## License
50
129
 
51
- Copyright (c) 2010 Nicolas Mérouze
52
- Copyright (c) 2009 Chris Brickley
53
- Copyright (c) 2009 Tony Pitale
54
-
55
- Permission is hereby granted, free of charge, to any person
56
- obtaining a copy of this software and associated documentation
57
- files (the "Software"), to deal in the Software without
58
- restriction, including without limitation the rights to use,
59
- copy, modify, merge, publish, distribute, sublicense, and/or sell
60
- copies of the Software, and to permit persons to whom the
61
- Software is furnished to do so, subject to the following
62
- conditions:
63
-
64
- The above copyright notice and this permission notice shall be
65
- included in all copies or substantial portions of the Software.
66
-
67
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
68
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
69
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
70
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
71
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
72
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
73
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
74
- OTHER DEALINGS IN THE SOFTWARE.
130
+ Released under the MIT license. See the [LICENSE](LICENSE) file.
131
+
132
+ [mongodb]: https://www.mongodb.com/
133
+ [mongo]: https://github.com/mongodb/mongo-ruby-driver
134
+ [mongoid]: http://mongoid.org/
135
+ [rails]: http://rubyonrails.org/
136
+
137
+ [issue-rails3]: https://github.com/mongoid/mongo_session_store/issues/17
@@ -0,0 +1,90 @@
1
+ require "rspec/core/rake_task"
2
+
3
+ desc "Prepare MongoDB connection"
4
+ task :mongo_prepare do
5
+ # Wait for mongod to start on Travis.
6
+ # From the Mongo Ruby Driver gem.
7
+ if ENV["TRAVIS"]
8
+ require "mongo"
9
+ client = Mongo::Client.new(["127.0.0.1:27017"])
10
+ begin
11
+ puts "Waiting for MongoDB..."
12
+ client.command("ismaster" => 1)
13
+ rescue Mongo::Error::NoServerAvailable
14
+ sleep 2
15
+ # 1 Retry
16
+ puts "Waiting for MongoDB..."
17
+ client.cluster.scan!
18
+ client.command(Mongo::Error::NoServerAvailable)
19
+ end
20
+ end
21
+ end
22
+
23
+ desc "Run the mongo_session_store gem test suite."
24
+ RSpec::Core::RakeTask.new :test => :mongo_prepare
25
+
26
+ desc "Release a new version of the mongo_session_store gem"
27
+ task :release do
28
+ GEMSPEC_NAME = "mongo_session_store"
29
+ GEM_NAME = "mongo_session_store"
30
+ VERSION_FILE = "lib/mongo_session_store/version.rb"
31
+
32
+ def reload_version
33
+ if defined?(MongoSessionStore::VERSION)
34
+ MongoSessionStore.send(:remove_const, :VERSION)
35
+ end
36
+ load File.expand_path(VERSION_FILE)
37
+ end
38
+
39
+ raise "$EDITOR should be set" unless ENV["EDITOR"]
40
+
41
+ def build_and_push_gem
42
+ puts '# Building gem'
43
+ puts `gem build #{GEMSPEC_NAME}.gemspec`
44
+ puts '# Publishing Gem'
45
+ puts `gem push #{GEM_NAME}-#{gem_version}.gem`
46
+ end
47
+
48
+ def update_repo
49
+ puts `git commit -am "Bump to #{version} [ci skip]"`
50
+ begin
51
+ puts `git tag #{version}`
52
+ puts `git push origin #{version}`
53
+ puts `git push origin master`
54
+ rescue
55
+ raise %(Tag: "#{version}" already exists)
56
+ end
57
+ end
58
+
59
+ def changes
60
+ git_status_to_array(`git status -s -u`)
61
+ end
62
+
63
+ def gem_version
64
+ MongoSessionStore::VERSION
65
+ end
66
+
67
+ def version
68
+ @version ||= "v" << gem_version
69
+ end
70
+
71
+ def git_status_to_array(changes)
72
+ changes.split("\n").map { |change| change.gsub(/^.. /, "") }
73
+ end
74
+
75
+ raise "Branch should hold no uncommitted file change)" unless changes.empty?
76
+
77
+ reload_version
78
+
79
+ system("$EDITOR #{VERSION_FILE}")
80
+ if changes.include?(VERSION_FILE)
81
+ reload_version
82
+ build_and_push_gem
83
+ update_repo
84
+ else
85
+ raise "Actually change the version in: #{VERSION_FILE}"
86
+ end
87
+ end
88
+
89
+ desc "Default task for Rake. Runs test suite."
90
+ task :default => :test