cream 0.7.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
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