devise-guests 0.2.0 → 0.3.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.
@@ -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