adva-user 0.0.3 → 0.0.4
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.
- data/app/controllers/admin/base_controller_slice.rb +5 -0
- data/app/controllers/installations_controller_slice.rb +9 -0
- data/app/controllers/user/confirmations_controller.rb +3 -0
- data/app/controllers/user/passwords_controller.rb +3 -0
- data/app/controllers/user/registrations_controller.rb +3 -0
- data/app/controllers/user/sessions_controller.rb +7 -0
- data/app/controllers/user/unlocks_controller.rb +3 -0
- data/app/models/account_slice.rb +4 -0
- data/app/models/user.rb +12 -0
- data/app/views/layouts/admin/_header_slice.rb +16 -0
- data/app/views/layouts/user.rb +2 -0
- data/app/views/mailer/confirmation_instructions.html.erb +5 -0
- data/app/views/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/user/confirmations/new.html.rb +16 -0
- data/app/views/user/form.rb +67 -0
- data/app/views/user/passwords/edit.html.rb +18 -0
- data/app/views/user/passwords/new.html.rb +16 -0
- data/app/views/user/registrations/edit.html.rb +18 -0
- data/app/views/user/registrations/new.html.rb +18 -0
- data/app/views/user/sessions/new.html.rb +26 -0
- data/app/views/user/unlocks/new.html.rb +16 -0
- data/config/locales/en.yml +87 -0
- data/config/routes.rb +3 -0
- data/lib/adva-user.rb +1 -0
- data/lib/adva/user.rb +42 -0
- data/lib/adva_user/version.rb +3 -0
- data/lib/testing/factories.rb +11 -0
- data/lib/testing/paths.rb +14 -0
- data/lib/testing/step_definitions.rb +23 -0
- data/public/stylesheets/adva-user/user.css +30 -0
- metadata +35 -5
- data/lib/bundler/repository.rb +0 -118
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'installations_controller'
|
2
|
+
|
3
|
+
InstallationsController.class_eval do
|
4
|
+
before_filter :set_admin_params, :only => :create
|
5
|
+
|
6
|
+
def set_admin_params
|
7
|
+
params[:site][:account_attributes][:users_attributes] ||= [{ :email => 'admin@admin.org', :password => 'admin!' }]
|
8
|
+
end
|
9
|
+
end
|
data/app/models/user.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'devise'
|
2
|
+
|
3
|
+
class User < ActiveRecord::Base
|
4
|
+
devise :database_authenticatable, :registerable, :rememberable, :confirmable,
|
5
|
+
:recoverable, :validatable, :trackable
|
6
|
+
|
7
|
+
serialize :roles, Array
|
8
|
+
|
9
|
+
def roles
|
10
|
+
read_attribute(:roles) || []
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_dependency 'layouts/admin'
|
2
|
+
require_dependency 'layouts/admin/_header'
|
3
|
+
|
4
|
+
module Layouts::Admin::Header::User
|
5
|
+
def right
|
6
|
+
login_status
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
def login_status
|
11
|
+
link_to t('.sign_out', :user => current_user.email), destroy_user_session_path
|
12
|
+
self << '·'.html_safe
|
13
|
+
end
|
14
|
+
|
15
|
+
Layouts::Admin::Header.send(:include, self)
|
16
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<p>Hello <%= @resource.email %>!</p>
|
2
|
+
|
3
|
+
<p>Someone has requested a link to change your password, and you can do this through the link below.</p>
|
4
|
+
|
5
|
+
<p><%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %></p>
|
6
|
+
|
7
|
+
<p>If you didn't request this, please ignore this email.</p>
|
8
|
+
<p>Your password won't change until you access the link above and create a new one.</p>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<p>Hello <%= @resource.email %>!</p>
|
2
|
+
|
3
|
+
<p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
|
4
|
+
|
5
|
+
<p>Click the link below to unlock your account:</p>
|
6
|
+
|
7
|
+
<p><%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %></p>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class User::Confirmations::New < User::Form
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
h2 :'.title'
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def fields
|
9
|
+
form.input :email
|
10
|
+
end
|
11
|
+
|
12
|
+
def form_arguments
|
13
|
+
[resource, { :as => resource_name, :url => confirmation_path(resource_name) }]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
class User::Form < Adva::View::Form
|
2
|
+
include do
|
3
|
+
def fields
|
4
|
+
devise_error_messages!
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def button_group
|
9
|
+
super
|
10
|
+
links
|
11
|
+
end
|
12
|
+
|
13
|
+
def buttons
|
14
|
+
form.submit t(:'.submit')
|
15
|
+
end
|
16
|
+
|
17
|
+
def links
|
18
|
+
ul :class => 'links user' do
|
19
|
+
li { sign_in_link } if sign_in?
|
20
|
+
li { sign_up_link } if sign_up?
|
21
|
+
li { forgot_password_link } if forgot_password?
|
22
|
+
li { resend_confirmation_link } if resend_confirmation?
|
23
|
+
li { resend_unlock_link } if resend_unlock?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def sign_in?
|
28
|
+
controller_name != 'sessions'
|
29
|
+
end
|
30
|
+
|
31
|
+
def sign_up?
|
32
|
+
devise_mapping.registerable? && controller_name != 'registrations'
|
33
|
+
end
|
34
|
+
|
35
|
+
def forgot_password?
|
36
|
+
devise_mapping.recoverable? && controller_name != 'passwords'
|
37
|
+
end
|
38
|
+
|
39
|
+
def resend_confirmation?
|
40
|
+
devise_mapping.confirmable? && controller_name != 'confirmations'
|
41
|
+
end
|
42
|
+
|
43
|
+
def resend_unlock?
|
44
|
+
devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'
|
45
|
+
end
|
46
|
+
|
47
|
+
def sign_in_link
|
48
|
+
capture { link_to(:'user.links.sign_in', new_session_path(resource_name), :class => :sign_in) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def sign_up_link
|
52
|
+
capture { link_to(:'user.links.sign_up', new_registration_path(resource_name), :class => :sign_up) }
|
53
|
+
end
|
54
|
+
|
55
|
+
def forgot_password_link
|
56
|
+
capture { link_to(:'user.links.forgot_password', new_password_path(resource_name), :class => :forgot_password) }
|
57
|
+
end
|
58
|
+
|
59
|
+
def resend_confirmation_link
|
60
|
+
capture { link_to(:'user.links.resend_confirmation', new_confirmation_path(resource_name), :class => :resend_confirmation) }
|
61
|
+
end
|
62
|
+
|
63
|
+
def resend_unlock_link
|
64
|
+
capture { link_to(:'user.links.resend_unlock', new_unlock_path(resource_name), :class => :resend_unlock) }
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class User::Passwords::Edit < User::Form
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
h2 :'.title'
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def fields
|
9
|
+
form.hidden_field :reset_password_token
|
10
|
+
form.input :password
|
11
|
+
form.input :password_confirmation
|
12
|
+
end
|
13
|
+
|
14
|
+
def form_arguments
|
15
|
+
[resource, { :as => resource_name, :url => password_path(resource_name), :html => { :method => :put } }]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class User::Passwords::New < User::Form
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
h2 :'.title'
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def fields
|
9
|
+
form.input :email
|
10
|
+
end
|
11
|
+
|
12
|
+
def form_arguments
|
13
|
+
[resource, { :as => resource_name, :url => password_path(resource_name) }]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class User::Registrations::Edit < User::Form
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
h2 :'.title'
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def fields
|
9
|
+
form.input :email
|
10
|
+
form.input :password
|
11
|
+
form.input :password_confirmation
|
12
|
+
end
|
13
|
+
|
14
|
+
def form_arguments
|
15
|
+
[resource, { :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put } }]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class User::Registrations::New < User::Form
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
h2 :'.title'
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def fields
|
9
|
+
form.input :email
|
10
|
+
form.input :password
|
11
|
+
form.input :password_confirmation
|
12
|
+
end
|
13
|
+
|
14
|
+
def form_arguments
|
15
|
+
[resource, { :as => resource_name, :url => registration_path(resource_name) }]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class User::Sessions::New < User::Form
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
h2 :'.title'
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def fields
|
9
|
+
pass_return_to
|
10
|
+
form.input :email
|
11
|
+
form.input :password
|
12
|
+
remember_me if devise_mapping.rememberable?
|
13
|
+
end
|
14
|
+
|
15
|
+
def form_arguments
|
16
|
+
[resource, { :as => resource_name, :url => session_path(resource_name) }]
|
17
|
+
end
|
18
|
+
|
19
|
+
def remember_me
|
20
|
+
div :class => :checkbox_group do
|
21
|
+
form.check_box :remember_me
|
22
|
+
form.label :remember_me, :class => :inline
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class User::Unlocks::New < User::Form
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
h2 :'.title'
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def fields
|
9
|
+
form.input :email
|
10
|
+
end
|
11
|
+
|
12
|
+
def form_arguments
|
13
|
+
[resource, { :as => resource_name, :url => unlock_path(resource_name) }]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
en:
|
2
|
+
errors:
|
3
|
+
messages:
|
4
|
+
not_found: "not found"
|
5
|
+
already_confirmed: "was already confirmed"
|
6
|
+
not_locked: "was not locked"
|
7
|
+
|
8
|
+
user:
|
9
|
+
links:
|
10
|
+
sign_in: Sign in
|
11
|
+
sign_up: Sign up
|
12
|
+
forgot_password: Forgot password?
|
13
|
+
resend_confirmation: Resend confirmation
|
14
|
+
resend_unlock: Resend unlock
|
15
|
+
sessions:
|
16
|
+
new:
|
17
|
+
title: Sign in
|
18
|
+
submit: Sign in
|
19
|
+
registrations:
|
20
|
+
new:
|
21
|
+
title: Sign up
|
22
|
+
submit: Sign up
|
23
|
+
edit:
|
24
|
+
title: Edit account
|
25
|
+
submit: Update account
|
26
|
+
current_password_required: "We need your current password to confirm your changes."
|
27
|
+
confirmations:
|
28
|
+
new:
|
29
|
+
title: Resend confirmation instructions
|
30
|
+
submit: Resend instructions
|
31
|
+
passwords:
|
32
|
+
new:
|
33
|
+
title: Forgot your password?
|
34
|
+
submit: Send instructions
|
35
|
+
edit:
|
36
|
+
title: Change your password
|
37
|
+
submit: Change password
|
38
|
+
unlocks:
|
39
|
+
new:
|
40
|
+
title: Resend unlock instructions
|
41
|
+
submit: Send instructions
|
42
|
+
|
43
|
+
devise:
|
44
|
+
failure:
|
45
|
+
unauthenticated: 'You need to sign in or sign up before continuing.'
|
46
|
+
unconfirmed: 'You have to confirm your account before continuing.'
|
47
|
+
locked: 'Your account is locked.'
|
48
|
+
invalid: 'Invalid email or password.'
|
49
|
+
invalid_token: 'Invalid authentication token.'
|
50
|
+
timeout: 'Your session expired, please sign in again to continue.'
|
51
|
+
inactive: 'Your account was not activated yet.'
|
52
|
+
sessions:
|
53
|
+
signed_in: 'Signed in successfully.'
|
54
|
+
signed_out: 'Signed out successfully.'
|
55
|
+
passwords:
|
56
|
+
send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.'
|
57
|
+
updated: 'Your password was changed successfully. You are now signed in.'
|
58
|
+
confirmations:
|
59
|
+
send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.'
|
60
|
+
confirmed: 'Your account was successfully confirmed. You are now signed in.'
|
61
|
+
registrations:
|
62
|
+
signed_up: 'You have signed up successfully. A confirmation was sent to your e-mail.'
|
63
|
+
updated: 'You updated your account successfully.'
|
64
|
+
destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.'
|
65
|
+
unlocks:
|
66
|
+
send_instructions: 'You will receive an email with instructions about how to unlock your account in a few minutes.'
|
67
|
+
unlocked: 'Your account was successfully unlocked. You are now signed in.'
|
68
|
+
mailer:
|
69
|
+
confirmation_instructions:
|
70
|
+
subject: 'Confirmation instructions'
|
71
|
+
reset_password_instructions:
|
72
|
+
subject: 'Reset password instructions'
|
73
|
+
unlock_instructions:
|
74
|
+
subject: 'Unlock Instructions'
|
75
|
+
|
76
|
+
layouts:
|
77
|
+
default:
|
78
|
+
signed_in_as: "Signed in as %{user}"
|
79
|
+
sign_in: Sign in
|
80
|
+
sign_up: Sign up
|
81
|
+
sign_out: Sign out
|
82
|
+
|
83
|
+
admin:
|
84
|
+
header:
|
85
|
+
sign_in: Sign in
|
86
|
+
sign_up: Sign up
|
87
|
+
sign_out: Sign out %{user}
|
data/config/routes.rb
ADDED
data/lib/adva-user.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'adva/user'
|
data/lib/adva/user.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'adva/core'
|
2
|
+
require 'devise'
|
3
|
+
|
4
|
+
module Adva
|
5
|
+
class User < ::Rails::Engine
|
6
|
+
include Adva::Engine
|
7
|
+
|
8
|
+
# TODO [config] should probably happen in the client app
|
9
|
+
# for more devise options see http://bit.ly/bwxrGg
|
10
|
+
initializer 'adva-user.devise_setup' do |app|
|
11
|
+
|
12
|
+
# FIXME [config]
|
13
|
+
app.config.action_mailer.default_url_options = { :host => 'www.example.com' }
|
14
|
+
|
15
|
+
Devise.setup do |config|
|
16
|
+
require 'devise/orm/active_record'
|
17
|
+
config.mailer_sender = 'please-change-me@config-initializers-devise.com'
|
18
|
+
config.encryptor = :bcrypt
|
19
|
+
config.password_length = 5..20
|
20
|
+
end
|
21
|
+
|
22
|
+
Devise::FailureApp.class_eval do
|
23
|
+
def redirect
|
24
|
+
flash[:alert] = i18n_message unless flash[:notice]
|
25
|
+
redirect_to send(:"new_#{scope}_session_path", :return_to => attempted_path)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
initializer 'adva-user.register_asset_expansions' do
|
31
|
+
ActionView::Helpers::AssetTagHelper.register_javascript_expansion(
|
32
|
+
:user => %w()
|
33
|
+
)
|
34
|
+
|
35
|
+
ActionView::Helpers::AssetTagHelper.register_stylesheet_expansion(
|
36
|
+
:user => %w( adva-core/default/forms
|
37
|
+
adva-core/admin/common
|
38
|
+
adva-user/user )
|
39
|
+
)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Factory.define :user, :class => User do |f|
|
2
|
+
f.sequence(:email) { |n| "user-#{n}@example.com" }
|
3
|
+
f.password 'password'
|
4
|
+
f.after_build { |user| User.deactivate_callbacks }
|
5
|
+
f.after_create { |user| user.confirm!; User.activate_callbacks }
|
6
|
+
end
|
7
|
+
|
8
|
+
Factory.define :admin, :parent => :user do |f|
|
9
|
+
f.email { User.find_by_email('admin@admin.org') ? 'admin-2@admin.org' : 'admin@admin.org' }
|
10
|
+
f.password 'admin!'
|
11
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Given /^I am signed in with "([^"]*)" and "([^"]*)"$/ do |email, password|
|
2
|
+
post user_session_path, :user => { :email => email, :password => password }
|
3
|
+
end
|
4
|
+
|
5
|
+
# This step should only be used for testing the login itself (login.feature)
|
6
|
+
# Please, use the step 'Given I am signed in with "admin@admin.org" and "admin!"' in all
|
7
|
+
# other features for performance reasons.
|
8
|
+
Given /^I sign in with "([^"]*)" and "([^"]*)"$/ do |email, password|
|
9
|
+
get new_user_session_path
|
10
|
+
fill_in 'Email', :with => email
|
11
|
+
fill_in 'Password', :with => password
|
12
|
+
click_button 'Sign in'
|
13
|
+
end
|
14
|
+
|
15
|
+
Given /a confirmed user with email "([^"]+)" and password "([^"]+)"/ do |email, password|
|
16
|
+
user = User.without_callbacks.create!(:email => email, :password => password)
|
17
|
+
user.confirm!
|
18
|
+
end
|
19
|
+
|
20
|
+
Then 'I should be signed in' do
|
21
|
+
When 'I go to the sign in page'
|
22
|
+
Then 'I should be on the homepage'
|
23
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
body {
|
2
|
+
font-size: 11pt;
|
3
|
+
}
|
4
|
+
#page {
|
5
|
+
border-top: 5px solid #c22222;
|
6
|
+
}
|
7
|
+
.main {
|
8
|
+
width: 400px;
|
9
|
+
margin: 0 auto;
|
10
|
+
padding-top: 0px;
|
11
|
+
}
|
12
|
+
#content {
|
13
|
+
padding: 20px 30px 30px 30px;
|
14
|
+
}
|
15
|
+
|
16
|
+
.links {
|
17
|
+
display: block !important;
|
18
|
+
margin-top: 30px;
|
19
|
+
}
|
20
|
+
.links li:first-child:before {
|
21
|
+
content: '';
|
22
|
+
}
|
23
|
+
.links .sign_in,
|
24
|
+
.links .sign_up,
|
25
|
+
.links .forgot_password,
|
26
|
+
.links .resend_confirmation,
|
27
|
+
.links .resend_unlock {
|
28
|
+
font-size: 9pt;
|
29
|
+
color: #999;
|
30
|
+
}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adva-user
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ingo Weiss
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-12-03 00:00:00 +01:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -58,7 +58,37 @@ extensions: []
|
|
58
58
|
extra_rdoc_files: []
|
59
59
|
|
60
60
|
files:
|
61
|
-
-
|
61
|
+
- app/controllers/user/passwords_controller.rb
|
62
|
+
- app/controllers/user/sessions_controller.rb
|
63
|
+
- app/controllers/user/unlocks_controller.rb
|
64
|
+
- app/controllers/user/confirmations_controller.rb
|
65
|
+
- app/controllers/user/registrations_controller.rb
|
66
|
+
- app/controllers/installations_controller_slice.rb
|
67
|
+
- app/controllers/admin/base_controller_slice.rb
|
68
|
+
- app/views/layouts/user.rb
|
69
|
+
- app/views/layouts/admin/_header_slice.rb
|
70
|
+
- app/views/user/unlocks/new.html.rb
|
71
|
+
- app/views/user/sessions/new.html.rb
|
72
|
+
- app/views/user/passwords/edit.html.rb
|
73
|
+
- app/views/user/passwords/new.html.rb
|
74
|
+
- app/views/user/form.rb
|
75
|
+
- app/views/user/confirmations/new.html.rb
|
76
|
+
- app/views/user/registrations/edit.html.rb
|
77
|
+
- app/views/user/registrations/new.html.rb
|
78
|
+
- app/views/mailer/confirmation_instructions.html.erb
|
79
|
+
- app/views/mailer/unlock_instructions.html.erb
|
80
|
+
- app/views/mailer/reset_password_instructions.html.erb
|
81
|
+
- app/models/user.rb
|
82
|
+
- app/models/account_slice.rb
|
83
|
+
- config/routes.rb
|
84
|
+
- config/locales/en.yml
|
85
|
+
- lib/adva-user.rb
|
86
|
+
- lib/adva_user/version.rb
|
87
|
+
- lib/adva/user.rb
|
88
|
+
- lib/testing/factories.rb
|
89
|
+
- lib/testing/paths.rb
|
90
|
+
- lib/testing/step_definitions.rb
|
91
|
+
- public/stylesheets/adva-user/user.css
|
62
92
|
has_rdoc: true
|
63
93
|
homepage: http://github.com/svenfuchs/adva-cms2
|
64
94
|
licenses: []
|
data/lib/bundler/repository.rb
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
require 'pathname'
|
2
|
-
|
3
|
-
# Bundler gemfile support for local/remote workspaces/repositories for work in
|
4
|
-
# development teams.
|
5
|
-
#
|
6
|
-
# Usage:
|
7
|
-
#
|
8
|
-
# # define paths to be searched for repositories:
|
9
|
-
# workspace '~/.projects ~/Development/{projects,work}'
|
10
|
-
#
|
11
|
-
# # define developer preferences for using local or remote repositories (uses ENV['user']):
|
12
|
-
# developer :sven, :prefer => :local
|
13
|
-
#
|
14
|
-
# # define repositories to be used for particular gems:
|
15
|
-
# adva_cms = repository('adva-cms2', :git => 'git@github.com:svenfuchs/adva-cms2.git', :ref => 'c2af0de')
|
16
|
-
# adva_shop = repository('adva-shop', :source => :local)
|
17
|
-
#
|
18
|
-
# # now use repositories to define gems:
|
19
|
-
# adva_cms.gem 'adva-core'
|
20
|
-
# adva_shop.gem 'adva-catalog'
|
21
|
-
#
|
22
|
-
# # The gem definition will now be proxied to Bundler with arguments according
|
23
|
-
# # to the setup defined earlier. E.g. as:
|
24
|
-
#
|
25
|
-
# gem 'adva-core', :path => 'Development/projects/adva-cms2/adva-core' # for developer 'sven'
|
26
|
-
# gem 'adva-core', :git => 'git@github.com:svenfuchs/adva-cms2.git', :ref => 'c2af0de' # for other developers
|
27
|
-
# gem 'adva-catalog', :path => 'Development/projects/adva-shop/adva-catalog' # for all developers
|
28
|
-
#
|
29
|
-
# One can also set an environment variable FORCE_REMOTE which will force remote
|
30
|
-
# repositories to be used *except* when a repository was defined with :source => :local
|
31
|
-
# which always forces the local repository to be used.
|
32
|
-
#
|
33
|
-
class Repository
|
34
|
-
class << self
|
35
|
-
def paths
|
36
|
-
@paths ||= []
|
37
|
-
end
|
38
|
-
|
39
|
-
def path(*paths)
|
40
|
-
paths.join(' ').split(' ').each do |path|
|
41
|
-
self.paths.concat(Pathname.glob(File.expand_path(path)))
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def developer(name, preferences)
|
46
|
-
developers[name] = preferences
|
47
|
-
workspaces(preferences[:workspace])
|
48
|
-
end
|
49
|
-
|
50
|
-
def current_developer
|
51
|
-
developers[ENV['USER'].to_sym] || {}
|
52
|
-
end
|
53
|
-
|
54
|
-
def developers(developers = nil)
|
55
|
-
@developers ||= {}
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class Gem < Array
|
60
|
-
def initialize(name, repository)
|
61
|
-
if repository.local?
|
62
|
-
sub_path = repository.path.join(name)
|
63
|
-
super([name, { :path => sub_path.exist? ? sub_path.to_s : repository.path.to_s }])
|
64
|
-
else
|
65
|
-
super([name, repository.options.dup])
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
attr_reader :bundler, :name, :options, :source
|
71
|
-
|
72
|
-
def initialize(bundler, name, options)
|
73
|
-
@bundler = bundler
|
74
|
-
@name = name
|
75
|
-
@source = options.delete(:source)
|
76
|
-
@options = options
|
77
|
-
end
|
78
|
-
|
79
|
-
def gem(name)
|
80
|
-
bundler.gem(*Gem.new(name, self))
|
81
|
-
end
|
82
|
-
|
83
|
-
def local?
|
84
|
-
source == :local # && path
|
85
|
-
end
|
86
|
-
|
87
|
-
def source
|
88
|
-
@source ||= forced_source || preferred_source || :remote
|
89
|
-
end
|
90
|
-
|
91
|
-
def forced_source
|
92
|
-
:remote if ENV['FORCE_REMOTE']
|
93
|
-
end
|
94
|
-
|
95
|
-
def preferred_source
|
96
|
-
self.class.current_developer[:prefer] || self.class.current_developer[name.to_sym]
|
97
|
-
end
|
98
|
-
|
99
|
-
def path
|
100
|
-
@path ||= begin
|
101
|
-
path = self.class.paths.detect { |path| path.join(name).exist? }
|
102
|
-
path ? path.join(name) : Pathname.new('.')
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def workspace(*paths)
|
108
|
-
Repository.path(*paths)
|
109
|
-
end
|
110
|
-
alias :workspaces :workspace
|
111
|
-
|
112
|
-
def developer(name, preferences)
|
113
|
-
Repository.developer(name, preferences)
|
114
|
-
end
|
115
|
-
|
116
|
-
def repository(*args)
|
117
|
-
Repository.new(self, *args)
|
118
|
-
end
|