rails-embryo 0.2.0 → 0.2.1

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.
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