rails-embryo 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.md CHANGED
@@ -1,3 +1,8 @@
1
+ ### Version 0.2.1
2
+ 2014-08-05
3
+
4
+ * Support for generating authenticated models with Devise
5
+
1
6
  ### Version 0.2.0
2
7
  2014-08-04
3
8
 
data/README.md CHANGED
@@ -77,6 +77,18 @@ model. All options available for the [basic model
77
77
  generator](http://railsguides.net/advanced-rails-model-generators/)
78
78
  are accepted.
79
79
 
80
+ #### Authenticated Models
81
+
82
+ To generate a model that can be authenticated with
83
+ [Devise](https://github.com/plataformatec/devise), use
84
+ `embryo:model:authenticated`:
85
+
86
+ rails generate embryo:model:authenticated first_name last_name
87
+
88
+ Authenticated models will automatically have an `email` field added and configured as the
89
+ authentication key. To customize this or any other Devise behavior, edit the generated
90
+ `config/initializers/devise.rb` along with the class and migration files for the new model.
91
+
80
92
  ### Enhancements Added
81
93
 
82
94
  All of the following enhancements are added to new applications by
@@ -6,6 +6,7 @@ require "generators/embryo/rspec"
6
6
  require "generators/embryo/factory_girl"
7
7
  require "generators/embryo/capybara"
8
8
  require "generators/embryo/poltergeist"
9
+ require "generators/embryo/devise"
9
10
 
10
11
  class EmbryoGenerator < Rails::Generators::Base
11
12
  def install(force: false, bundle: false)
@@ -17,6 +18,7 @@ class EmbryoGenerator < Rails::Generators::Base
17
18
  invoke "embryo:poltergeist"
18
19
  invoke "embryo:template_support"
19
20
  invoke "embryo:default_view"
21
+ invoke "embryo:devise"
20
22
  clean_files
21
23
  end
22
24
 
@@ -0,0 +1,34 @@
1
+ require "rails-embryo"
2
+
3
+ module Embryo
4
+ class DeviseGenerator < Rails::Generators::Base
5
+ include GeneratorHelpers::Hidden
6
+
7
+ def install
8
+ gem "devise"
9
+ create_file "spec/support/devise.rb", devise_helper_data
10
+ update_environments
11
+ end
12
+
13
+ private
14
+
15
+ def devise_helper_data
16
+ 'RSpec.configure do |config|
17
+ config.include Devise::TestHelpers, type: :controller
18
+ end
19
+ '
20
+ end
21
+
22
+ def update_environments
23
+ ["development", "test"].each do |env|
24
+ if File.exist? "config/environments/#{env}.rb"
25
+ inject_into_file "config/environments/#{env}.rb", before: "end\n" do
26
+ '
27
+ config.action_mailer.default_url_options = { host: "localhost" }
28
+ '
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,59 @@
1
+ require "rails/generators"
2
+
3
+ module Embryo
4
+ module Model
5
+ class AuthenticatedGenerator < Rails::Generators::NamedBase
6
+ def install
7
+ generate "embryo:model", ARGV.join(' ')
8
+ generate "devise:install --quiet" unless File.exist? "config/initializers/devise.rb"
9
+ generate "devise #{ARGV.first}"
10
+ update_controllers
11
+ update_factory
12
+ update_seeds
13
+ end
14
+
15
+ private
16
+
17
+ def update_controllers
18
+ return if File.read("app/controllers/application_controller.rb").include? ":authenticate"
19
+ inject_into_file "app/controllers/application_controller.rb", {
20
+ after: "class ApplicationController < ActionController::Base\n"
21
+ } do
22
+ " before_action :authenticate_#{singular_name}!\n\n"
23
+ end
24
+ inject_into_file "app/controllers/dashboard_controller.rb", {
25
+ after: "class DashboardController < ApplicationController\n"
26
+ } do
27
+ " skip_before_action :authenticate_#{singular_name}!\n\n"
28
+ end
29
+ end
30
+
31
+ def update_factory
32
+ inject_into_file "spec/factories/#{file_path}.rb", {
33
+ after: / factory :#{factory_name}.* do\n/
34
+ } do
35
+ factory_additions
36
+ end
37
+ end
38
+
39
+ def factory_additions
40
+ ' sequence(:email) { |n| "user#{n}@example.com" }
41
+ password "password"
42
+ '
43
+ end
44
+
45
+ def update_seeds
46
+ append_file "db/seeds.rb", seed_data
47
+ end
48
+
49
+ def seed_data
50
+ "\n" + class_name + '.where(email: "' + singular_name + '@example.com").first_or_create password: "password"
51
+ '
52
+ end
53
+
54
+ def factory_name
55
+ file_path.gsub "/", "_"
56
+ end
57
+ end
58
+ end
59
+ end
data/lib/rails-embryo.rb CHANGED
@@ -2,6 +2,7 @@ require "rails-embryo/version"
2
2
  require "rails-embryo/generator_helpers/hidden"
3
3
  require "generators/embryo"
4
4
  require "generators/embryo/model"
5
+ require "generators/embryo/model/authenticated"
5
6
  require "rails/railtie"
6
7
 
7
8
  class EmbryoHiddenGeneratorsRailtie < Rails::Railtie
@@ -1,5 +1,5 @@
1
1
  module Rails
2
2
  module Embryo
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-embryo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
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: 2014-08-04 00:00:00.000000000 Z
12
+ date: 2014-08-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -70,11 +70,13 @@ files:
70
70
  - lib/rails-embryo/generator_helpers/hidden.rb
71
71
  - lib/rails-embryo/version.rb
72
72
  - lib/rails-embryo.rb
73
+ - lib/generators/embryo/model/authenticated.rb
73
74
  - lib/generators/embryo/factory_girl.rb
74
75
  - lib/generators/embryo/capybara.rb
75
76
  - lib/generators/embryo/default_view.rb
76
77
  - lib/generators/embryo/model.rb
77
78
  - lib/generators/embryo/template_support.rb
79
+ - lib/generators/embryo/devise.rb
78
80
  - lib/generators/embryo/poltergeist.rb
79
81
  - lib/generators/embryo/rspec.rb
80
82
  - lib/generators/embryo/ruby_version.rb