devise 1.0.11 → 1.1.pre
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of devise might be problematic. Click here for more details.
- data/CHANGELOG.rdoc +6 -72
- data/Gemfile +18 -0
- data/README.rdoc +51 -46
- data/Rakefile +5 -4
- data/app/controllers/{confirmations_controller.rb → devise/confirmations_controller.rb} +2 -2
- data/app/controllers/{passwords_controller.rb → devise/passwords_controller.rb} +4 -3
- data/app/controllers/{registrations_controller.rb → devise/registrations_controller.rb} +11 -7
- data/app/controllers/{sessions_controller.rb → devise/sessions_controller.rb} +11 -8
- data/app/controllers/{unlocks_controller.rb → devise/unlocks_controller.rb} +2 -10
- data/app/models/devise/mailer.rb +55 -0
- data/app/views/{confirmations → devise/confirmations}/new.html.erb +1 -1
- data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
- data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/{passwords → devise/passwords}/edit.html.erb +1 -1
- data/app/views/{passwords → devise/passwords}/new.html.erb +1 -1
- data/app/views/{registrations → devise/registrations}/edit.html.erb +1 -1
- data/app/views/{registrations → devise/registrations}/new.html.erb +1 -1
- data/app/views/{sessions → devise/sessions}/new.html.erb +1 -1
- data/app/views/{shared/_devise_links.erb → devise/shared/_links.erb} +0 -0
- data/app/views/{unlocks → devise/unlocks}/new.html.erb +1 -1
- data/{lib/devise → config}/locales/en.yml +7 -1
- data/lib/devise.rb +6 -29
- data/lib/devise/controllers/helpers.rb +16 -43
- data/lib/devise/controllers/internal_helpers.rb +10 -36
- data/lib/devise/controllers/scoped_views.rb +35 -0
- data/lib/devise/failure_app.rb +7 -14
- data/lib/devise/hooks/rememberable.rb +3 -6
- data/lib/devise/hooks/trackable.rb +1 -1
- data/lib/devise/mapping.rb +17 -18
- data/lib/devise/models.rb +4 -20
- data/lib/devise/models/{database_authenticatable.rb → authenticatable.rb} +16 -28
- data/lib/devise/models/confirmable.rb +25 -23
- data/lib/devise/models/http_authenticatable.rb +3 -7
- data/lib/devise/models/lockable.rb +40 -35
- data/lib/devise/models/recoverable.rb +4 -8
- data/lib/devise/models/rememberable.rb +6 -9
- data/lib/devise/models/timeoutable.rb +1 -3
- data/lib/devise/models/token_authenticatable.rb +4 -5
- data/lib/devise/models/validatable.rb +10 -1
- data/lib/devise/orm/mongo_mapper.rb +10 -23
- data/lib/devise/rails.rb +11 -9
- data/lib/devise/rails/routes.rb +113 -107
- data/lib/devise/rails/warden_compat.rb +3 -41
- data/lib/devise/schema.rb +13 -21
- data/lib/devise/strategies/{database_authenticatable.rb → authenticatable.rb} +3 -3
- data/lib/devise/strategies/http_authenticatable.rb +4 -22
- data/lib/devise/test_helpers.rb +1 -8
- data/lib/devise/version.rb +1 -1
- data/lib/generators/devise/devise_generator.rb +57 -0
- data/{generators → lib/generators}/devise/templates/migration.rb +1 -1
- data/lib/generators/devise_install/devise_install_generator.rb +25 -0
- data/{generators → lib/generators}/devise_install/templates/README +4 -8
- data/{generators → lib/generators}/devise_install/templates/devise.rb +0 -3
- data/lib/generators/devise_views/devise_views_generator.rb +11 -0
- data/test/controllers/helpers_test.rb +15 -9
- data/test/devise_test.rb +1 -6
- data/test/encryptors_test.rb +0 -3
- data/test/failure_app_test.rb +6 -1
- data/test/integration/authenticatable_test.rb +25 -85
- data/test/integration/http_authenticatable_test.rb +2 -10
- data/test/integration/lockable_test.rb +3 -22
- data/test/integration/recoverable_test.rb +1 -1
- data/test/integration/registerable_test.rb +31 -36
- data/test/integration/rememberable_test.rb +6 -24
- data/test/integration/token_authenticatable_test.rb +2 -4
- data/test/integration/trackable_test.rb +1 -1
- data/test/mailers/confirmation_instructions_test.rb +4 -10
- data/test/mailers/unlock_instructions_test.rb +1 -1
- data/test/mapping_test.rb +12 -24
- data/test/models/authenticatable_test.rb +3 -3
- data/test/models/confirmable_test.rb +29 -29
- data/test/models/http_authenticatable_test.rb +19 -0
- data/test/models/lockable_test.rb +45 -44
- data/test/models/recoverable_test.rb +7 -7
- data/test/models/rememberable_test.rb +7 -10
- data/test/models/validatable_test.rb +19 -24
- data/test/models_test.rb +2 -16
- data/test/orm/active_record.rb +3 -4
- data/test/orm/mongo_mapper.rb +2 -10
- data/test/rails_app/app/active_record/admin.rb +1 -1
- data/test/rails_app/app/active_record/user.rb +3 -3
- data/test/rails_app/app/controllers/application_controller.rb +1 -7
- data/test/rails_app/app/controllers/sessions_controller.rb +6 -0
- data/test/rails_app/app/controllers/users_controller.rb +0 -4
- data/test/rails_app/app/mongo_mapper/admin.rb +4 -7
- data/test/rails_app/app/mongo_mapper/user.rb +5 -8
- data/test/rails_app/config/application.rb +32 -0
- data/test/rails_app/config/boot.rb +7 -108
- data/test/rails_app/config/environment.rb +4 -41
- data/test/rails_app/config/environments/development.rb +15 -13
- data/test/rails_app/config/environments/production.rb +25 -20
- data/test/rails_app/config/environments/test.rb +23 -22
- data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_app/config/initializers/cookie_verification_secret.rb +7 -0
- data/test/rails_app/config/initializers/devise.rb +0 -3
- data/test/rails_app/config/initializers/session_store.rb +2 -2
- data/test/rails_app/config/routes.rb +17 -21
- data/test/routes_test.rb +30 -47
- data/test/support/{assertions_helper.rb → assertions.rb} +0 -15
- data/test/support/{tests_helper.rb → helpers.rb} +16 -3
- data/test/support/{integration_tests_helper.rb → integration.rb} +8 -4
- data/test/support/webrat/integrations/rails.rb +31 -0
- data/test/test_helper.rb +8 -7
- data/test/test_helpers_test.rb +9 -9
- metadata +53 -128
- data/app/models/devise_mailer.rb +0 -68
- data/app/views/devise_mailer/confirmation_instructions.html.erb +0 -5
- data/app/views/devise_mailer/reset_password_instructions.html.erb +0 -8
- data/app/views/devise_mailer/unlock_instructions.html.erb +0 -7
- data/generators/devise/USAGE +0 -5
- data/generators/devise/devise_generator.rb +0 -15
- data/generators/devise/lib/route_devise.rb +0 -32
- data/generators/devise/templates/model.rb +0 -9
- data/generators/devise_install/USAGE +0 -3
- data/generators/devise_install/devise_install_generator.rb +0 -15
- data/generators/devise_views/USAGE +0 -3
- data/generators/devise_views/devise_views_generator.rb +0 -21
- data/rails/init.rb +0 -2
- data/test/integration/rack_middleware_test.rb +0 -47
- data/test/rails_app/config/initializers/new_rails_defaults.rb +0 -24
@@ -83,7 +83,7 @@ class RecoverableTest < ActiveSupport::TestCase
|
|
83
83
|
test 'should return a new record with errors if user was not found by e-mail' do
|
84
84
|
reset_password_user = User.send_reset_password_instructions(:email => "invalid@email.com")
|
85
85
|
assert reset_password_user.new_record?
|
86
|
-
|
86
|
+
assert_equal "not found", reset_password_user.errors[:email].join
|
87
87
|
end
|
88
88
|
|
89
89
|
test 'should reset reset_password_token before send the reset instructions email' do
|
@@ -104,20 +104,20 @@ class RecoverableTest < ActiveSupport::TestCase
|
|
104
104
|
user = create_user
|
105
105
|
user.send :generate_reset_password_token!
|
106
106
|
|
107
|
-
reset_password_user = User.
|
107
|
+
reset_password_user = User.reset_password!(:reset_password_token => user.reset_password_token)
|
108
108
|
assert_equal reset_password_user, user
|
109
109
|
end
|
110
110
|
|
111
111
|
test 'should a new record with errors if no reset_password_token is found' do
|
112
|
-
reset_password_user = User.
|
112
|
+
reset_password_user = User.reset_password!(:reset_password_token => 'invalid_token')
|
113
113
|
assert reset_password_user.new_record?
|
114
|
-
|
114
|
+
assert_equal "is invalid", reset_password_user.errors[:reset_password_token].join
|
115
115
|
end
|
116
116
|
|
117
117
|
test 'should a new record with errors if reset_password_token is blank' do
|
118
|
-
reset_password_user = User.
|
118
|
+
reset_password_user = User.reset_password!(:reset_password_token => '')
|
119
119
|
assert reset_password_user.new_record?
|
120
|
-
assert_match
|
120
|
+
assert_match "can't be blank", reset_password_user.errors[:reset_password_token].join
|
121
121
|
end
|
122
122
|
|
123
123
|
test 'should reset successfully user password given the new password and confirmation' do
|
@@ -125,7 +125,7 @@ class RecoverableTest < ActiveSupport::TestCase
|
|
125
125
|
old_password = user.password
|
126
126
|
user.send :generate_reset_password_token!
|
127
127
|
|
128
|
-
reset_password_user = User.
|
128
|
+
reset_password_user = User.reset_password!(
|
129
129
|
:reset_password_token => user.reset_password_token,
|
130
130
|
:password => 'new_password',
|
131
131
|
:password_confirmation => 'new_password'
|
@@ -1,11 +1,6 @@
|
|
1
1
|
require 'test/test_helper'
|
2
2
|
|
3
3
|
class RememberableTest < ActiveSupport::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
Devise.remember_for = 1
|
7
|
-
end
|
8
|
-
|
9
4
|
test 'should respond to remember_me attribute' do
|
10
5
|
user = new_user
|
11
6
|
assert user.respond_to?(:remember_me)
|
@@ -54,11 +49,13 @@ class RememberableTest < ActiveSupport::TestCase
|
|
54
49
|
end
|
55
50
|
|
56
51
|
test 'valid remember token should also verify if remember is not expired' do
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
52
|
+
swap Devise, :remember_for => 1.day do
|
53
|
+
user = create_user
|
54
|
+
user.remember_me!
|
55
|
+
user.remember_created_at = 3.days.ago
|
56
|
+
user.save
|
57
|
+
assert_not user.valid_remember_token?(user.remember_token)
|
58
|
+
end
|
62
59
|
end
|
63
60
|
|
64
61
|
test 'serialize into cookie' do
|
@@ -7,31 +7,30 @@ class ValidatableTest < ActiveSupport::TestCase
|
|
7
7
|
user = new_user(:email => nil)
|
8
8
|
assert user.invalid?
|
9
9
|
assert user.errors[:email]
|
10
|
-
assert_equal 'can\'t be blank', user.errors[:email]
|
10
|
+
assert_equal 'can\'t be blank', user.errors[:email].join
|
11
11
|
end
|
12
12
|
|
13
13
|
test 'should require uniqueness of email, allowing blank' do
|
14
14
|
existing_user = create_user
|
15
|
+
|
15
16
|
user = new_user(:email => '')
|
16
17
|
assert user.invalid?
|
17
|
-
assert_not_equal 'has already been taken', user.errors[:email]
|
18
|
+
assert_not_equal 'has already been taken', user.errors[:email].join
|
19
|
+
|
18
20
|
user.email = existing_user.email
|
19
21
|
assert user.invalid?
|
20
|
-
|
21
|
-
assert_equal 1, [*user.errors[:email]].size
|
22
|
-
assert_equal 'has already been taken', user.errors[:email]
|
22
|
+
assert_equal 'has already been taken', user.errors[:email].join
|
23
23
|
end
|
24
24
|
|
25
25
|
test 'should require correct email format, allowing blank' do
|
26
26
|
user = new_user(:email => '')
|
27
27
|
assert user.invalid?
|
28
|
-
assert_not_equal 'is invalid', user.errors[:email]
|
28
|
+
assert_not_equal 'is invalid', user.errors[:email].join
|
29
|
+
|
29
30
|
%w(invalid_email_format email@invalid invalid$character@mail.com other@not 123).each do |email|
|
30
31
|
user.email = email
|
31
32
|
assert user.invalid?, 'should be invalid with email ' << email
|
32
|
-
|
33
|
-
assert_equal 1, [*user.errors[:email]].size
|
34
|
-
assert_equal 'is invalid', user.errors[:email]
|
33
|
+
assert_equal 'is invalid', user.errors[:email].join
|
35
34
|
end
|
36
35
|
end
|
37
36
|
|
@@ -39,63 +38,59 @@ class ValidatableTest < ActiveSupport::TestCase
|
|
39
38
|
%w(a.b.c@example.com test_mail@gmail.com any@any.net email@test.br 123@mail.test).each do |email|
|
40
39
|
user = new_user(:email => email)
|
41
40
|
assert user.valid?, 'should be valid with email ' << email
|
42
|
-
|
41
|
+
assert_blank user.errors[:email]
|
43
42
|
end
|
44
43
|
end
|
45
44
|
|
46
45
|
test 'should require password to be set when creating a new record' do
|
47
46
|
user = new_user(:password => '', :password_confirmation => '')
|
48
47
|
assert user.invalid?
|
49
|
-
|
50
|
-
assert_equal 'can\'t be blank', user.errors[:password]
|
48
|
+
assert_equal 'can\'t be blank', user.errors[:password].join
|
51
49
|
end
|
52
50
|
|
53
51
|
test 'should require confirmation to be set when creating a new record' do
|
54
52
|
user = new_user(:password => 'new_password', :password_confirmation => 'blabla')
|
55
53
|
assert user.invalid?
|
56
|
-
|
57
|
-
assert_equal 'doesn\'t match confirmation', user.errors[:password]
|
54
|
+
assert_equal 'doesn\'t match confirmation', user.errors[:password].join
|
58
55
|
end
|
59
56
|
|
60
57
|
test 'should require password when updating/reseting password' do
|
61
58
|
user = create_user
|
59
|
+
|
62
60
|
user.password = ''
|
63
61
|
user.password_confirmation = ''
|
62
|
+
|
64
63
|
assert user.invalid?
|
65
|
-
|
66
|
-
assert_equal 'can\'t be blank', user.errors[:password]
|
64
|
+
assert_equal 'can\'t be blank', user.errors[:password].join
|
67
65
|
end
|
68
66
|
|
69
67
|
test 'should require confirmation when updating/reseting password' do
|
70
68
|
user = create_user
|
71
69
|
user.password_confirmation = 'another_password'
|
72
70
|
assert user.invalid?
|
73
|
-
|
74
|
-
assert_equal 'doesn\'t match confirmation', user.errors[:password]
|
71
|
+
assert_equal 'doesn\'t match confirmation', user.errors[:password].join
|
75
72
|
end
|
76
73
|
|
77
74
|
test 'should require a password with minimum of 6 characters' do
|
78
75
|
user = new_user(:password => '12345', :password_confirmation => '12345')
|
79
76
|
assert user.invalid?
|
80
|
-
|
81
|
-
assert_equal 'is too short (minimum is 6 characters)', user.errors[:password]
|
77
|
+
assert_equal 'is too short (minimum is 6 characters)', user.errors[:password].join
|
82
78
|
end
|
83
79
|
|
84
80
|
test 'should require a password with maximum of 20 characters long' do
|
85
81
|
user = new_user(:password => 'x'*21, :password_confirmation => 'x'*21)
|
86
82
|
assert user.invalid?
|
87
|
-
|
88
|
-
assert_equal 'is too long (maximum is 20 characters)', user.errors[:password]
|
83
|
+
assert_equal 'is too long (maximum is 20 characters)', user.errors[:password].join
|
89
84
|
end
|
90
85
|
|
91
86
|
test 'should not require password length when it\'s not changed' do
|
92
87
|
user = create_user.reload
|
93
88
|
user.password = user.password_confirmation = nil
|
94
89
|
assert user.valid?
|
90
|
+
|
95
91
|
user.password_confirmation = 'confirmation'
|
96
92
|
assert user.invalid?
|
97
|
-
|
98
|
-
assert_not user.errors[:password].to_a.include?('is too short (minimum is 6 characters)')
|
93
|
+
assert_not (user.errors[:password].join =~ /is too long/)
|
99
94
|
end
|
100
95
|
|
101
96
|
test 'shuold not be included in objects with invalid API' do
|
data/test/models_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'test/test_helper'
|
2
2
|
|
3
3
|
class Configurable < User
|
4
|
-
devise :
|
4
|
+
devise :authenticatable, :confirmable, :rememberable, :timeoutable, :lockable,
|
5
5
|
:stretches => 15, :pepper => 'abcdef', :confirm_within => 5.days,
|
6
6
|
:remember_for => 7.days, :timeout_in => 15.minutes, :unlock_in => 10.days
|
7
7
|
end
|
@@ -23,21 +23,7 @@ class ActiveRecordTest < ActiveSupport::TestCase
|
|
23
23
|
end
|
24
24
|
|
25
25
|
test 'add modules cherry pick' do
|
26
|
-
assert_include_modules Admin, :
|
27
|
-
end
|
28
|
-
|
29
|
-
test 'order of module inclusion' do
|
30
|
-
correct_module_order = [:database_authenticatable, :registerable, :timeoutable]
|
31
|
-
incorrect_module_order = [:database_authenticatable, :timeoutable, :registerable]
|
32
|
-
|
33
|
-
assert_include_modules Admin, *incorrect_module_order
|
34
|
-
|
35
|
-
# get module constants from symbol list
|
36
|
-
module_constants = correct_module_order.collect { |mod| Devise::Models::const_get(mod.to_s.classify) }
|
37
|
-
|
38
|
-
# confirm that they adhere to the order in ALL
|
39
|
-
# get included modules, filter out the noise, and reverse the order
|
40
|
-
assert_equal module_constants, (Admin.included_modules & module_constants).reverse
|
26
|
+
assert_include_modules Admin, :authenticatable, :registerable, :timeoutable
|
41
27
|
end
|
42
28
|
|
43
29
|
test 'set a default value for stretches' do
|
data/test/orm/active_record.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
-
require File.
|
2
|
-
require 'test_help'
|
1
|
+
require File.expand_path('../../rails_app/config/environment', __FILE__)
|
2
|
+
require 'rails/test_help'
|
3
3
|
|
4
4
|
ActiveRecord::Migration.verbose = false
|
5
5
|
ActiveRecord::Base.logger = Logger.new(nil)
|
6
|
-
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
|
7
6
|
|
8
7
|
ActiveRecord::Schema.define(:version => 1) do
|
9
8
|
[:users, :admins, :accounts].each do |table|
|
10
9
|
create_table table do |t|
|
11
|
-
t.
|
10
|
+
t.authenticatable :null => table == :admins
|
12
11
|
|
13
12
|
if table != :admin
|
14
13
|
t.string :username
|
data/test/orm/mongo_mapper.rb
CHANGED
@@ -1,16 +1,8 @@
|
|
1
|
-
require 'mongo_mapper'
|
2
1
|
MongoMapper.database = "devise-test-suite"
|
3
2
|
MongoMapper.connection = Mongo::Connection.new('127.0.0.1', 27017)
|
4
3
|
|
5
|
-
require File.
|
6
|
-
require 'test_help'
|
7
|
-
|
8
|
-
module MongoMapper::Document
|
9
|
-
# TODO This should not be required
|
10
|
-
def invalid?
|
11
|
-
!valid?
|
12
|
-
end
|
13
|
-
end
|
4
|
+
require File.expand_path('../../rails_app/config/environment', __FILE__)
|
5
|
+
require 'rails/test_help'
|
14
6
|
|
15
7
|
class ActiveSupport::TestCase
|
16
8
|
setup do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class User < ActiveRecord::Base
|
2
|
-
devise :
|
3
|
-
:
|
4
|
-
:
|
2
|
+
devise :authenticatable, :http_authenticatable, :confirmable, :lockable, :recoverable,
|
3
|
+
:registerable, :rememberable, :timeoutable, :token_authenticatable,
|
4
|
+
:trackable, :validatable
|
5
5
|
|
6
6
|
attr_accessible :username, :email, :password, :password_confirmation
|
7
7
|
end
|
@@ -2,11 +2,5 @@
|
|
2
2
|
# Likewise, all the methods added will be available for all controllers.
|
3
3
|
|
4
4
|
class ApplicationController < ActionController::Base
|
5
|
-
|
6
|
-
protect_from_forgery # See ActionController::RequestForgeryProtection for details
|
7
|
-
|
8
|
-
# Scrub sensitive parameters from your log
|
9
|
-
filter_parameter_logging :password
|
10
|
-
|
11
|
-
before_filter :current_user
|
5
|
+
protect_from_forgery
|
12
6
|
end
|
@@ -1,13 +1,10 @@
|
|
1
1
|
class Admin
|
2
2
|
include MongoMapper::Document
|
3
|
-
|
3
|
+
include MongoMapper::Plugins::Callbacks
|
4
4
|
|
5
|
-
|
6
|
-
last(:conditions => conditions)
|
7
|
-
end
|
5
|
+
devise :authenticatable, :timeoutable
|
8
6
|
|
9
|
-
def self.
|
10
|
-
|
11
|
-
super options
|
7
|
+
def self.find_for_authentication(conditions)
|
8
|
+
last(:conditions => conditions, :order => "email")
|
12
9
|
end
|
13
10
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
class User
|
2
2
|
include MongoMapper::Document
|
3
|
+
|
3
4
|
key :created_at, DateTime
|
4
|
-
devise :authenticatable, :http_authenticatable, :confirmable, :lockable, :recoverable,
|
5
|
-
:registerable, :rememberable, :timeoutable, :token_authenticatable,
|
6
|
-
:trackable, :validatable
|
7
|
-
# attr_accessible :username, :email, :password, :password_confirmation
|
8
5
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
end
|
6
|
+
devise :authenticatable, :http_authenticatable, :confirmable, :recoverable,
|
7
|
+
:rememberable, :trackable, :validatable, :timeoutable, :lockable,
|
8
|
+
:token_authenticatable
|
13
9
|
|
10
|
+
# attr_accessible :username, :email, :password, :password_confirmation
|
14
11
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
DEVISE_ORM = :active_record unless defined? DEVISE_ORM
|
4
|
+
|
5
|
+
require "active_record/railtie" if DEVISE_ORM == :active_record
|
6
|
+
require "action_controller/railtie"
|
7
|
+
require "action_mailer/railtie"
|
8
|
+
require "active_resource/railtie"
|
9
|
+
require "rails/test_unit/railtie"
|
10
|
+
|
11
|
+
Bundler.require :default, DEVISE_ORM
|
12
|
+
require "devise"
|
13
|
+
|
14
|
+
module RailsApp
|
15
|
+
class Application < Rails::Application
|
16
|
+
config.root = File.expand_path("../..", __FILE__)
|
17
|
+
|
18
|
+
# Add additional load paths for your own custom dirs
|
19
|
+
config.load_paths.reject!{ |p| p =~ /\/app\/(\w+)$/ && !%w(controllers helpers views).include?($1) }
|
20
|
+
config.load_paths += [ "#{config.root}/app/#{DEVISE_ORM}" ]
|
21
|
+
|
22
|
+
# Configure generators values. Many other options are available, be sure to check the documentation.
|
23
|
+
# config.generators do |g|
|
24
|
+
# g.orm :active_record
|
25
|
+
# g.template_engine :erb
|
26
|
+
# g.test_framework :test_unit, :fixture => true
|
27
|
+
# end
|
28
|
+
|
29
|
+
# Configure sensitive parameters which will be filtered from the log file.
|
30
|
+
config.filter_parameters << :password
|
31
|
+
end
|
32
|
+
end
|
@@ -1,110 +1,9 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
class << self
|
8
|
-
def boot!
|
9
|
-
unless booted?
|
10
|
-
preinitialize
|
11
|
-
pick_boot.run
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def booted?
|
16
|
-
defined? Rails::Initializer
|
17
|
-
end
|
18
|
-
|
19
|
-
def pick_boot
|
20
|
-
(vendor_rails? ? VendorBoot : GemBoot).new
|
21
|
-
end
|
22
|
-
|
23
|
-
def vendor_rails?
|
24
|
-
File.exist?("#{RAILS_ROOT}/vendor/rails")
|
25
|
-
end
|
26
|
-
|
27
|
-
def preinitialize
|
28
|
-
load(preinitializer_path) if File.exist?(preinitializer_path)
|
29
|
-
end
|
30
|
-
|
31
|
-
def preinitializer_path
|
32
|
-
"#{RAILS_ROOT}/config/preinitializer.rb"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class Boot
|
37
|
-
def run
|
38
|
-
load_initializer
|
39
|
-
Rails::Initializer.run(:set_load_path)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
class VendorBoot < Boot
|
44
|
-
def load_initializer
|
45
|
-
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
|
46
|
-
Rails::Initializer.run(:install_gem_spec_stubs)
|
47
|
-
Rails::GemDependency.add_frozen_gem_path
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class GemBoot < Boot
|
52
|
-
def load_initializer
|
53
|
-
self.class.load_rubygems
|
54
|
-
load_rails_gem
|
55
|
-
require 'initializer'
|
56
|
-
end
|
57
|
-
|
58
|
-
def load_rails_gem
|
59
|
-
if version = self.class.gem_version
|
60
|
-
gem 'rails', version
|
61
|
-
else
|
62
|
-
gem 'rails'
|
63
|
-
end
|
64
|
-
rescue Gem::LoadError => load_error
|
65
|
-
$stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
66
|
-
exit 1
|
67
|
-
end
|
68
|
-
|
69
|
-
class << self
|
70
|
-
def rubygems_version
|
71
|
-
Gem::RubyGemsVersion rescue nil
|
72
|
-
end
|
73
|
-
|
74
|
-
def gem_version
|
75
|
-
if defined? RAILS_GEM_VERSION
|
76
|
-
RAILS_GEM_VERSION
|
77
|
-
elsif ENV.include?('RAILS_GEM_VERSION')
|
78
|
-
ENV['RAILS_GEM_VERSION']
|
79
|
-
else
|
80
|
-
parse_gem_version(read_environment_rb)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def load_rubygems
|
85
|
-
min_version = '1.3.2'
|
86
|
-
require 'rubygems'
|
87
|
-
unless rubygems_version >= min_version
|
88
|
-
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
89
|
-
exit 1
|
90
|
-
end
|
91
|
-
|
92
|
-
rescue LoadError
|
93
|
-
$stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
|
94
|
-
exit 1
|
95
|
-
end
|
96
|
-
|
97
|
-
def parse_gem_version(text)
|
98
|
-
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
|
99
|
-
end
|
100
|
-
|
101
|
-
private
|
102
|
-
def read_environment_rb
|
103
|
-
File.read("#{RAILS_ROOT}/config/environment.rb")
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
1
|
+
begin
|
2
|
+
require File.expand_path("../../../../.bundle/environment", __FILE__)
|
3
|
+
rescue LoadError
|
4
|
+
require 'rubygems'
|
5
|
+
require 'bundler'
|
6
|
+
Bundler.setup
|
107
7
|
end
|
108
8
|
|
109
|
-
|
110
|
-
Rails.boot!
|
9
|
+
$:.unshift File.expand_path('../../../../lib', __FILE__)
|