devise-guests 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,7 +30,20 @@ module DeviseGuests::Controllers
30
30
 
31
31
 
32
32
  def guest_#{mapping}
33
- #{class_name}.find(session[:guest_#{mapping}_id].nil? ? session[:guest_#{mapping}_id] = create_guest_#{mapping}.id : session[:guest_#{mapping}_id])
33
+ return @guest_#{mapping} if @guest_#{mapping}
34
+
35
+ if session[:guest_#{mapping}_id]
36
+ @guest_#{mapping} = #{class_name}.find_by_email(session[:guest_#{mapping}_id]) rescue nil
37
+ @guest_#{mapping} = nil if @guest_#{mapping}.respond_to? :guest and !@guest_#{mapping}.guest
38
+ end
39
+
40
+ @guest_#{mapping} ||= begin
41
+ u = create_guest_#{mapping}(session[:guest_#{mapping}_id])
42
+ session[:guest_#{mapping}_id] = u.email
43
+ u
44
+ end
45
+
46
+ @guest_#{mapping}
34
47
  end
35
48
 
36
49
  def current_or_guest_#{mapping}
@@ -48,9 +61,11 @@ module DeviseGuests::Controllers
48
61
  end
49
62
 
50
63
  private
51
- def create_guest_#{mapping}
52
- u = #{class_name}.create(:email => "guest_" + guest_#{mapping}_unique_suffix + "@example.com")
53
- u.save(:validate => false)
64
+ def create_guest_#{mapping} email = nil
65
+ email ||= "guest_" + guest_#{mapping}_unique_suffix + "@example.com"
66
+ u = #{class_name}.create(:email => email)
67
+ u.password = u.password_confirmation = email
68
+ u.guest = true if u.respond_to? :guest
54
69
  u
55
70
  end
56
71
 
@@ -8,5 +8,15 @@ module DeviseGuests
8
8
  Devise.include_helpers(DeviseGuests::Controllers)
9
9
  Devise.helpers << DeviseGuests::Controllers::Helpers
10
10
  end
11
+
12
+ # This makes our rake tasks visible.
13
+ rake_tasks do
14
+ Dir.chdir(File.expand_path(File.join(File.dirname(__FILE__), '..'))) do
15
+ Dir.glob(File.join('railties', '*.rake')).each do |railtie|
16
+ load railtie
17
+ end
18
+ end
19
+ end
20
+
11
21
  end
12
22
  end
@@ -1,3 +1,3 @@
1
1
  module DeviseGuests
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -0,0 +1,22 @@
1
+ require 'rails/generators/active_record'
2
+ require 'generators/devise/orm_helpers'
3
+
4
+ module ActiveRecord
5
+ module Generators
6
+ class DeviseGuestsGenerator < ActiveRecord::Generators::Base
7
+ include Devise::Generators::OrmHelpers
8
+ source_root File.expand_path("../templates", __FILE__)
9
+
10
+ def copy_devise_migration
11
+ migration_template "migration_existing.rb", "db/migrate/add_devise_guests_to_#{table_name}"
12
+ end
13
+
14
+ def migration_data
15
+ <<RUBY
16
+ ## Database authenticatable
17
+ t.boolean :guest, :default => false
18
+ RUBY
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ class AddDeviseGuestsTo<%= table_name.camelize %> < ActiveRecord::Migration
2
+ def self.up
3
+ change_table(:<%= table_name %>) do |t|
4
+ <%= migration_data -%>
5
+ end
6
+
7
+ end
8
+
9
+ def self.down
10
+ # By default, we don't want to make any assumption about how to roll back a migration when your
11
+ # model already existed. Please edit below which fields you would like to remove in this migration.
12
+ raise ActiveRecord::IrreversibleMigration
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ module DeviseGuests
2
+ module Generators
3
+ class DeviseGuestsGenerator < Rails::Generators::NamedBase
4
+ include Rails::Generators::ResourceHelpers
5
+
6
+ namespace "devise_guests"
7
+ source_root File.expand_path("../templates", __FILE__)
8
+
9
+ desc "Generates devise guests attributes into a model with the given NAME"
10
+
11
+ hook_for :orm
12
+
13
+ def do_nothing
14
+
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ namespace :devise_guests do
2
+ # task to clean out old guest users
3
+ # rake devise_guests:delete_old_guest_users[days_old]
4
+ # example cron entry to delete users older than 7 days at 2:00 AM every day:
5
+ # 0 2 * * * cd /path/to/your/app && /path/to/rake devise_guests:delete_old_guest_users[7] RAILS_ENV=your_env
6
+ desc "Removes entries in the users table for guest users that are older than the number of days given."
7
+ task :delete_old_guest_users, [:days_old] => [:environment] do |t, args|
8
+ args.with_defaults(:days_old => 7)
9
+ User.where("guest = ? and updated_at < ?", true, Time.now - args[:days_old].to_i.days).each { |x| x.destroy }
10
+ end
11
+
12
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-guests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-11 00:00:00.000000000 Z
12
+ date: 2012-11-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: devise
@@ -142,6 +142,10 @@ files:
142
142
  - lib/devise-guests/controllers/url_helpers.rb
143
143
  - lib/devise-guests/engine.rb
144
144
  - lib/devise-guests/version.rb
145
+ - lib/generators/active_record/devise_guests_generator.rb
146
+ - lib/generators/active_record/templates/migration_existing.rb
147
+ - lib/generators/devise_guests/devise_guests_generator.rb
148
+ - lib/railties/devise_guests.rake
145
149
  - spec/controllers/application_controller_spec.rb
146
150
  - spec/helpers/devise_guests_helpers_spec.rb
147
151
  - spec/integration/simple_integration_spec.rb
@@ -168,7 +172,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
168
172
  version: '0'
169
173
  segments:
170
174
  - 0
171
- hash: -2973806746937180540
175
+ hash: 2571116811496388903
172
176
  required_rubygems_version: !ruby/object:Gem::Requirement
173
177
  none: false
174
178
  requirements:
@@ -177,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
177
181
  version: '0'
178
182
  segments:
179
183
  - 0
180
- hash: -2973806746937180540
184
+ hash: 2571116811496388903
181
185
  requirements: []
182
186
  rubyforge_project:
183
187
  rubygems_version: 1.8.23