cream 0.7.0 → 0.7.2

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.
Files changed (41) hide show
  1. data/Rakefile +3 -3
  2. data/VERSION +1 -1
  3. data/cream.gemspec +15 -37
  4. data/lib/cream.rb +3 -1
  5. data/lib/cream/configure/after_init/role_config.rb +19 -15
  6. data/lib/cream/configure/rails.rb +4 -12
  7. data/lib/cream/role.rb +9 -1
  8. data/lib/cream/{configure.rb → roles_config.rb} +0 -4
  9. data/lib/generators/cancan/config/config_generator.rb +13 -3
  10. data/lib/generators/cream/app/app_generator.rb +39 -18
  11. data/lib/generators/cream/full_config/full_config_generator.rb +154 -0
  12. data/lib/generators/cream/views/haml_util.rb +1 -1
  13. data/lib/generators/cream/views/views_generator.rb +1 -1
  14. data/lib/generators/devise/config/config_generator.rb +16 -7
  15. data/lib/generators/devise/users/users_generator.rb +13 -8
  16. data/lib/generators/permits/config/config_generator.rb +14 -11
  17. data/lib/generators/roles/config/config_generator.rb +12 -6
  18. data/spec/generator_spec_helper.rb +1 -1
  19. data/spec/generators/cancan/config/cancan_config_generator_spec.rb +1 -1
  20. data/spec/generators/cream/app/app_generator_spec.rb +42 -22
  21. data/spec/generators/cream/full_config/full_config_generator_spec.rb +37 -0
  22. data/spec/generators/permits/config/permits_config_generator_spec.rb +1 -1
  23. metadata +12 -35
  24. data/lib/generators/cream/config/DESIGN NOTES.markdown +0 -79
  25. data/lib/generators/cream/config/config_generator.rb +0 -86
  26. data/lib/generators/cream/config/modules/app_config.rb +0 -48
  27. data/lib/generators/cream/config/modules/cancan_config.rb +0 -27
  28. data/lib/generators/cream/config/modules/cream_config.rb +0 -36
  29. data/lib/generators/cream/config/modules/devise_config.rb +0 -58
  30. data/lib/generators/cream/config/modules/devise_users_config.rb +0 -109
  31. data/lib/generators/cream/config/modules/helper.rb +0 -79
  32. data/lib/generators/cream/config/modules/permits_config.rb +0 -15
  33. data/lib/generators/cream/config/modules/roles_config.rb +0 -39
  34. data/spec/generators/cream/config/CONFIG_GENERATOR_SPEC.markdown +0 -15
  35. data/spec/generators/cream/config/devise/existing_devise_users.rb +0 -61
  36. data/spec/generators/cream/config/empty_app/default_args_spec.rb +0 -51
  37. data/spec/generators/cream/config/permits/existing_permits_spec.rb +0 -0
  38. data/spec/generators/cream/config/permits/no_permits_spec.rb +0 -0
  39. data/spec/generators/cream/config/roles/default_roles.rb +0 -51
  40. data/spec/generators/cream/config/roles/roles_spec.rb +0 -60
  41. data/spec/generators/cream/shared_examples.rb +0 -18
@@ -36,7 +36,7 @@ module Cream
36
36
  end
37
37
  end
38
38
 
39
- directory haml_root, "app/views/#{scope || 'devise'}"
39
+ directory haml_root, "app/views/#{scope || 'cream'}"
40
40
  end
41
41
  end
42
42
  end
@@ -1,4 +1,4 @@
1
- require 'generators/cream/string_ext'
1
+ require 'sugar-high/path'
2
2
  require 'generators/views/haml_util'
3
3
 
4
4
  module Cream
@@ -10,12 +10,13 @@ module Devise
10
10
  desc "Configure Devise"
11
11
 
12
12
  # ORM to use
13
- class_option :orm, :type => :string, :default => 'active_record', :desc => "ORM to use"
14
- class_option :logfile, :type => :string, :default => nil, :desc => "Logfile location"
13
+ class_option :orm, :type => :string, :default => 'active_record', :desc => "ORM to use"
14
+ class_option :logfile, :type => :string, :default => nil, :desc => "Logfile location"
15
+ class_option :gems, :type => :boolean, :default => false, :desc => "Add gems to gemfile?"
15
16
 
16
17
  def configure_devise
17
18
  logger.add_logfile :logfile => logfile if logfile
18
- devise_gems
19
+ devise_gems if gems?
19
20
  devise_install
20
21
  [:orm, :mailer, :protection].each{|m| send(:"#{m}_configure!", orm) }
21
22
  end
@@ -27,6 +28,10 @@ module Devise
27
28
 
28
29
  use_helpers :controller, :app, :special, :file
29
30
 
31
+ def gems?
32
+ options[:gems]
33
+ end
34
+
30
35
  def logfile
31
36
  options[:logfile]
32
37
  end
@@ -51,30 +56,34 @@ module Devise
51
56
  rgen 'devise:install'
52
57
  end
53
58
 
54
- def bundle_install
55
- run "bundle install"
59
+ def bundle_install *gems
60
+ run "bundle install #{gems.join(' ')}"
56
61
  end
57
62
 
58
63
  def devise_gems
59
64
  logger.debug 'devise_gems'
60
65
  gem 'devise'
61
66
 
62
- # Devise ORM integration
67
+ orm_gem = nil
68
+ # Devise ORM integration
63
69
  case orm.to_sym
64
70
  when :mongoid
65
71
  say "Please configure Devise for Mongoid as similar to Rails 3 example app: http://github.com/fortuity/rails3-mongoid-devise"
66
72
  when :mongo_mapper
73
+ orm_gem = 'mm-devise'
67
74
  gem 'mm-devise'
68
75
  when :data_mapper
76
+ orm_gem = 'dm-devise'
69
77
  gem 'dm-devise'
70
78
  when :couch_db
79
+ orm_gem = 'devise_couch'
71
80
  gem 'devise_couch'
72
81
  say "Please note that Couch DB does not currently have a Roles implementation. Feel free to provide one."
73
82
  say "Look at Roles DataMapper (roles_data_mapper) for an example ;)"
74
83
  else
75
84
  say "Orm #{orm} is not currently supported by Cream. You are most welcome to provide a Cream adapter for that ORM ;)"
76
85
  end
77
- # bundle_install
86
+ bundle_install 'devise', orm_gem
78
87
  end
79
88
 
80
89
  def protection_configure! orm
@@ -10,16 +10,17 @@ module Devise
10
10
  desc "Configure Devise with Users"
11
11
 
12
12
  # Create Admin user
13
- class_option :admin_user, :type => :boolean, :default => false, :desc => "Create admin user"
13
+ class_option :admin_user, :type => :boolean, :default => false, :desc => "Create admin user"
14
14
  # ORM to use
15
- class_option :orm, :type => :string, :default => 'active_record', :desc => "ORM to use"
16
- class_option :logfile, :type => :string, :default => nil, :desc => "Logfile location"
17
-
15
+ class_option :orm, :type => :string, :default => 'active_record', :desc => "ORM to use"
16
+ class_option :logfile, :type => :string, :default => nil, :desc => "Logfile location"
17
+ class_option :gems, :type => :boolean, :default => false, :desc => "Add gems to gemfile?"
18
+
18
19
  def configure_devise_users
19
20
  logger.add_logfile :logfile => logfile if logfile
20
21
  logger.debug "Configure Devise Users"
21
22
 
22
- devise_gems
23
+ devise_gems if gems?
23
24
  devise_default_user if !has_model? :user
24
25
 
25
26
  # # if User model is NOT configured with devise strategy
@@ -35,17 +36,21 @@ module Devise
35
36
 
36
37
  use_helpers :model
37
38
 
39
+ def gems?
40
+ options[:gems]
41
+ end
42
+
38
43
  def logfile
39
44
  options[:logfile]
40
45
  end
41
46
 
42
47
  def devise_gems
43
48
  gem 'devise'
44
- # bundle_install
49
+ bundle_install 'devise'
45
50
  end
46
51
 
47
- def bundle_install
48
- run "bundle install"
52
+ def bundle_install *gems
53
+ run "bundle install #{gems.jon(' ')}"
49
54
  end
50
55
 
51
56
  def devise_default_user
@@ -11,18 +11,18 @@ module Permits
11
11
 
12
12
  # ORM to use
13
13
  class_option :orm, :type => :string, :default => 'active_record', :desc => "ORM to use"
14
- class_option :roles, :type => :array, :default => ['guest', 'admin'], :desc => "Roles for permits"
14
+ class_option :roles, :type => :array, :default => ['guest', 'admin'], :desc => "Roles for permits"
15
15
  class_option :logfile, :type => :string, :default => nil, :desc => "Logfile location"
16
+ class_option :gems, :type => :boolean, :default => false, :desc => "Add gems to gemfile?"
16
17
 
17
18
  def configure_permits
18
19
  logger.add_logfile :logfile => logfile if logfile
19
20
  logger.debug "Configure Permits"
20
21
 
21
- permits_gems
22
- permits_initializer
22
+ permits_gems if gems?
23
23
 
24
24
  # Run permits generator to generate permit for each role
25
- rgen "permits --roles #{roles}"
25
+ rgen "permits --roles #{roles} --orm #{orm}"
26
26
  end
27
27
 
28
28
  protected
@@ -32,6 +32,10 @@ module Permits
32
32
 
33
33
  use_helpers :app, :file, :special
34
34
 
35
+ def gems?
36
+ options[:gems]
37
+ end
38
+
35
39
  # rails generate ...
36
40
  def rgen command
37
41
  execute "rails g #{command}"
@@ -55,14 +59,13 @@ module Permits
55
59
  end
56
60
 
57
61
  def permits_gems
58
- gem 'cancan-permits'
59
- end
62
+ gem 'cancan-permits'
63
+ bundle_install 'cancan-permits'
64
+ end
60
65
 
61
- def permits_initializer
62
- create_initializer :permits do
63
- "Permits::Ability.orm = :#{options[:orm]}"
64
- end
65
- end
66
+ def bundle_install *gems
67
+ run "bundle install #{gems.jon(' ')}"
68
+ end
66
69
  end
67
70
  end
68
71
  end
@@ -15,10 +15,11 @@ module Roles
15
15
  class_option :roles, :type => :array, :default => ['guest', 'admin'], :desc => "Valid roles to use"
16
16
  class_option :logfile, :type => :string, :default => nil, :desc => "Logfile location"
17
17
  class_option :default_roles, :type => :boolean, :default => true, :desc => "Create default roles :admin and :guest"
18
-
18
+ class_option :gems, :type => :boolean, :default => false, :desc => "Add gems to gemfile?"
19
+
19
20
  def configure_roles
20
21
  logger.add_logfile :logfile => logfile if logfile
21
- roles_gems
22
+ roles_gems if gems?
22
23
  create_roles
23
24
  set_valid_roles_cream
24
25
  use_roles_strategy
@@ -31,6 +32,10 @@ module Roles
31
32
 
32
33
  use_helpers :model, :file
33
34
 
35
+ def gems?
36
+ options[:gems]
37
+ end
38
+
34
39
  def logfile
35
40
  options[:logfile]
36
41
  end
@@ -62,12 +67,13 @@ module Roles
62
67
  end
63
68
 
64
69
  def roles_gems
65
- gem "roles_#{orm}"
66
- # bundle_install
70
+ gem_name = "roles_#{orm}"
71
+ gem gem_name
72
+ bundle_install gem_name
67
73
  end
68
74
 
69
- def bundle_install
70
- run "bundle install"
75
+ def bundle_install *gems
76
+ run "bundle install #{gems.join(' ')}"
71
77
  end
72
78
 
73
79
  def roles_generator
@@ -16,7 +16,7 @@ RSpec.configure do |config|
16
16
  config.mock_with :mocha
17
17
 
18
18
  config.before do
19
- # create_rails_app
19
+ create_rails_app
20
20
  end
21
21
 
22
22
  # config.after do
@@ -8,7 +8,7 @@ describe 'Generator' do
8
8
 
9
9
  before :each do
10
10
  setup_generator 'config_generator' do
11
- tests CanCan::Generators::ConfigGenerator
11
+ tests Cancan::Generators::ConfigGenerator
12
12
  end
13
13
  end
14
14
 
@@ -1,30 +1,50 @@
1
- require 'spec_helper'
1
+ require 'generator_spec_helper'
2
+ require_generator :cream => :app
3
+
4
+ LOGFILE = 'cream-app-config.log'
2
5
 
3
6
  describe 'Generator' do
4
- with_generator do |g, c|
5
- g.tests Cream::Generators::AppGenerator
6
- c.setup
7
- end
7
+ use_helpers :controller, :special, :file, :view
8
8
 
9
- def check_generated_views folder=nil
10
- with_generator do |g, check|
11
- if folder
12
- g.run_generator folder
13
- else
14
- g.run_generator
15
- folder = 'menu'
16
- end
17
- check.view folder, '_admin_login_items.html.erb', %w{admin_block not_admin_block}
18
- check.view folder, '_login_items.html.erb', %w{user_block not_user_block}
19
- check.view folder, 'registration_items.html.erb', %w{user_block not_user_block}
9
+ before :each do
10
+ setup_generator :cream_app_generator do
11
+ tests Cream::Generators::AppGenerator
20
12
  end
21
13
  end
22
14
 
23
- it "should create views in default scope 'menu' " do
24
- check_generated_views
15
+ describe "Configure Rails 3 app as a Cream app" do
16
+ before do
17
+ Dir.chdir Rails.root do
18
+ @generator = with_generator do |g|
19
+ arguments = "--orm mongoid --logfile #{LOGFILE}".args
20
+ g.run_generator arguments
21
+ end
22
+ end
23
+ end
24
+
25
+ describe 'result of app generator' do
26
+ it "should replace requirement statements in application file" do
27
+ ["action_controller/railtie", "action_mailer/railtie", "active_resource/railtie", "rails/test_unit/railtie"].each do |req|
28
+ req = Regexp.escape(req)
29
+ read_application_file.should match /#{req}/
30
+ end
31
+ end
32
+
33
+ it "should add notice and alert flash displayers to application layout" do
34
+ [:alert, :notice].each do |name|
35
+ read_view(:layouts, :application).should match /<%= #{name} %>/
36
+ end
37
+ end
38
+
39
+ it "should generate Welcome controller" do
40
+ controller_file?(:welcome).should be_true
41
+ end
42
+
43
+ it "should add root to routes file" do
44
+ read_routes_file.should match /root\s+:to\s*=>/
45
+ end
46
+ end
25
47
  end
26
-
27
- it "should create views in explicit scope 'login' " do
28
- check_generated_views 'login'
29
- end
30
48
  end
49
+
50
+
@@ -0,0 +1,37 @@
1
+ require 'generator_spec_helper'
2
+ require_generator :cream => :full_config
3
+
4
+ LOGFILE = 'cream-full_config.log'
5
+
6
+ describe 'Generator' do
7
+ use_helpers :controller, :special, :file, :view
8
+
9
+ before :each do
10
+ setup_generator :cream_full_config_generator do
11
+ tests Cream::Generators::FullConfigGenerator
12
+ end
13
+ end
14
+
15
+ before do
16
+ Dir.chdir Rails.root do
17
+ @generator = with_generator do |g|
18
+ arguments = "--orm mongo_mapper --logfile #{LOGFILE}".args
19
+ g.run_generator arguments
20
+ end
21
+ end
22
+ end
23
+
24
+ describe "Configure Rails 3 app as a Cream configured app" do
25
+ describe 'result of Cream config generator' do
26
+ it "should add cream gem" do
27
+ Rails.root.should have_gem 'cream'
28
+ end
29
+
30
+ # it "should add mongoid devise gem" do
31
+ # Rails.root.should have_gem 'mm-devise'
32
+ # end
33
+ end
34
+ end
35
+ end
36
+
37
+
@@ -31,7 +31,7 @@ describe 'Generator' do
31
31
  end
32
32
 
33
33
  it "should generate a permits initializer file with orm set to mongoid" do
34
- File.read(initializer_file(:permits)).should match /Permits::Application.orm = mongoid/
34
+ File.read(initializer_file(:permits)).should match /Permits::Application.orm = :mongoid/
35
35
  end
36
36
  end
37
37
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 7
8
- - 0
9
- version: 0.7.0
8
+ - 2
9
+ version: 0.7.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kristian Mandrup
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-16 00:00:00 +02:00
17
+ date: 2010-10-17 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -29,8 +29,7 @@ dependencies:
29
29
  - 2
30
30
  - 0
31
31
  - 0
32
- - rc
33
- version: 2.0.0.rc
32
+ version: 2.0.0
34
33
  type: :development
35
34
  version_requirements: *id001
36
35
  - !ruby/object:Gem::Dependency
@@ -194,8 +193,8 @@ dependencies:
194
193
  segments:
195
194
  - 0
196
195
  - 2
197
- - 5
198
- version: 0.2.5
196
+ - 8
197
+ version: 0.2.8
199
198
  type: :runtime
200
199
  version_requirements: *id012
201
200
  - !ruby/object:Gem::Dependency
@@ -239,8 +238,8 @@ dependencies:
239
238
  segments:
240
239
  - 0
241
240
  - 2
242
- - 10
243
- version: 0.2.10
241
+ - 11
242
+ version: 0.2.11
244
243
  type: :runtime
245
244
  version_requirements: *id015
246
245
  description: Provides assistance for setting up Session, Role and Permission systems for a Rails 3 app. Support for multiple ORMs
@@ -274,7 +273,6 @@ files:
274
273
  - features/role_strategy/clears_role_strategy.feature
275
274
  - init.rb
276
275
  - lib/cream.rb
277
- - lib/cream/configure.rb
278
276
  - lib/cream/configure/after_init/role_config.rb
279
277
  - lib/cream/configure/rails.rb
280
278
  - lib/cream/controller/ability.rb
@@ -284,21 +282,13 @@ files:
284
282
  - lib/cream/namespaces.rb
285
283
  - lib/cream/rails/config.rb
286
284
  - lib/cream/role.rb
285
+ - lib/cream/roles_config.rb
287
286
  - lib/cream/view/host_area.rb
288
287
  - lib/cream/view/role_area.rb
289
288
  - lib/cream/view/user_action_menu.rb
290
289
  - lib/generators/cancan/config/config_generator.rb
291
290
  - lib/generators/cream/app/app_generator.rb
292
- - lib/generators/cream/config/DESIGN NOTES.markdown
293
- - lib/generators/cream/config/config_generator.rb
294
- - lib/generators/cream/config/modules/app_config.rb
295
- - lib/generators/cream/config/modules/cancan_config.rb
296
- - lib/generators/cream/config/modules/cream_config.rb
297
- - lib/generators/cream/config/modules/devise_config.rb
298
- - lib/generators/cream/config/modules/devise_users_config.rb
299
- - lib/generators/cream/config/modules/helper.rb
300
- - lib/generators/cream/config/modules/permits_config.rb
301
- - lib/generators/cream/config/modules/roles_config.rb
291
+ - lib/generators/cream/full_config/full_config_generator.rb
302
292
  - lib/generators/cream/views/haml_util.rb
303
293
  - lib/generators/cream/views/views_generator.rb
304
294
  - lib/generators/cream_refactor.rb
@@ -320,14 +310,7 @@ files:
320
310
  - spec/generator_spec_helper.rb
321
311
  - spec/generators/cancan/config/cancan_config_generator_spec.rb
322
312
  - spec/generators/cream/app/app_generator_spec.rb
323
- - spec/generators/cream/config/CONFIG_GENERATOR_SPEC.markdown
324
- - spec/generators/cream/config/devise/existing_devise_users.rb
325
- - spec/generators/cream/config/empty_app/default_args_spec.rb
326
- - spec/generators/cream/config/permits/existing_permits_spec.rb
327
- - spec/generators/cream/config/permits/no_permits_spec.rb
328
- - spec/generators/cream/config/roles/default_roles.rb
329
- - spec/generators/cream/config/roles/roles_spec.rb
330
- - spec/generators/cream/shared_examples.rb
313
+ - spec/generators/cream/full_config/full_config_generator_spec.rb
331
314
  - spec/generators/cream/views_generator_spec.rb
332
315
  - spec/generators/devise/config/devise_config_generator_spec.rb
333
316
  - spec/generators/devise/users/devise_users_generator_spec.rb
@@ -387,13 +370,7 @@ test_files:
387
370
  - spec/generator_spec_helper.rb
388
371
  - spec/generators/cancan/config/cancan_config_generator_spec.rb
389
372
  - spec/generators/cream/app/app_generator_spec.rb
390
- - spec/generators/cream/config/devise/existing_devise_users.rb
391
- - spec/generators/cream/config/empty_app/default_args_spec.rb
392
- - spec/generators/cream/config/permits/existing_permits_spec.rb
393
- - spec/generators/cream/config/permits/no_permits_spec.rb
394
- - spec/generators/cream/config/roles/default_roles.rb
395
- - spec/generators/cream/config/roles/roles_spec.rb
396
- - spec/generators/cream/shared_examples.rb
373
+ - spec/generators/cream/full_config/full_config_generator_spec.rb
397
374
  - spec/generators/cream/views_generator_spec.rb
398
375
  - spec/generators/devise/config/devise_config_generator_spec.rb
399
376
  - spec/generators/devise/users/devise_users_generator_spec.rb