myrails 3.0.0 → 3.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c6835e4654f3921eb1bd5e951dc1b1e9b8792af9
4
- data.tar.gz: df6dbb5f9bb3cb4ee67014df715da12c44d3ac7e
3
+ metadata.gz: 9ed7e61ea2b40e5a344c676140da8f60af448c8e
4
+ data.tar.gz: d41681dca063a5c9b72fe9642754ce560725c440
5
5
  SHA512:
6
- metadata.gz: 22f504e636872cea1b66f945e36759e7e6044ecbcd921cdbe25986a0de3cab4a762bd8b5fe1ec31a86f53ca5fdcb5e9a4c0fbf8327b200e36a60e97a28bd116d
7
- data.tar.gz: 70a8d6cdf73948023c7a16276d32daead723a3eb5d658bc9258dc17a4e847b32ece28cc06fd55a7e1b1345d9dbbc5c87b796feb4775d0fb069d7ccc184158a35
6
+ metadata.gz: 5438539fcbd03f0d222086028234936d46c5e0be42d86a7f61a7688c9f91470794f569fc0a4d48d1d2ada1c4ef85f4484eac99000137055918b942a8b08b0e62
7
+ data.tar.gz: 3185b829a2982195df217b380496851e2c15bd1d98bea77827fe807e395c60b17ba8202821e2893623de23ef7dc320842ecf3716139295332ef4e504cc59c8ee
@@ -0,0 +1,2 @@
1
+ # Load application ENV vars and merge with existing ENV vars. Loaded here so can use values in initializers.
2
+ ENV.update YAML.load_file('config/application.yml')[Rails.env] rescue {}
@@ -1,8 +1,8 @@
1
- # config.action_mailer.delivery_method = :smtp
2
- # config.action_mailer.smtp_settings = { address: 'smtp.sendgrid.net',
3
- # port: 587,
4
- # domain: 'yourdomain.com',
5
- # user_name: 'someuser',
6
- # password: 'somepassword',
7
- # authentication: 'plain',
8
- # enable_starttls_auto: true }
1
+ config.action_mailer.delivery_method = :smtp
2
+ config.action_mailer.smtp_settings = { address: 'smtp.sendgrid.net',
3
+ port: 587,
4
+ domain: 'yourdomain.com',
5
+ user_name: 'someuser',
6
+ password: 'somepassword',
7
+ authentication: 'plain',
8
+ enable_starttls_auto: true }
@@ -0,0 +1,19 @@
1
+ # use: ENV['email']
2
+ # Add code to place file in config/initializers
3
+ # Load application ENV vars and merge with existing ENV vars. Loaded here so can use values in initializers.
4
+ # ENV.update YAML.load_file('config/application.yml')[Rails.env] rescue {}
5
+ defaults: &defaults
6
+ email: dev@example.com
7
+ secret: mypassword
8
+
9
+ development:
10
+ <<: *defaults
11
+
12
+ test:
13
+ <<: *defaults
14
+ email: test@example.com
15
+
16
+ production:
17
+ <<: *defaults
18
+ email: info@example.com
19
+ secret: mypassword
@@ -1,12 +1,12 @@
1
- class <%= options[:name].pluralize.camelize %>Controller < ApplicationController
2
- # before_action :<%= options[:name].singularize %>, only: []
1
+ class <%= options[:name].pluralize.camelize %>Controller < <% if options[:name].include?("/")%><%= options[:name].split("/").first.camelize %>::<%= options[:name].split("/").first.camelize %><% else %>Application<% end %>Controller
2
+ # before_action :<%= options[:name].split("/").last.singularize %>, only: []
3
3
  private
4
4
 
5
- def <%= options[:name].singularize %>
6
- @<%= options[:name].singularize %> = <%= options[:name].camelize.singularize %>.find(params[:id])
5
+ def <%= options[:name].split("/").last.singularize %>
6
+ @<%= options[:name].split("/").last.singularize %> = <%= options[:name].camelize.singularize %>.find(params[:id])
7
7
  end
8
8
 
9
- def <%= options[:name].singularize %>_params
10
- params.require(:<%= options[:name].singularize %>).permit()
9
+ def <%= options[:name].split("/").last.singularize %>_params
10
+ params.require(:<%= options[:name].split("/").last.singularize %>).permit()
11
11
  end
12
12
  end
@@ -1,14 +1,2 @@
1
- module <%= options[:namespace].camelize %>
2
- class <%= options[:name].pluralize.camelize %>Controller < <%= options[:namespace].camelize %>::<%= options[:namespace].camelize %>Controller
3
- # before_action :<%= options[:name].singularize %>, only: []
4
- private
5
-
6
- def <%= options[:name].singularize.downcase %>
7
- @<%= options[:name].singularize %> = <%= options[:name].camelize.singularize %>.find(params[:id])
8
- end
9
-
10
- def <%= options[:name].singularize.downcase %>_params
11
- params.require(:<%= options[:name.downcase].singularize %>).permit()
12
- end
13
- end
1
+ class <%= options[:name].split("/").first.camelize %>::<%= options[:name].split("/").first.camelize %>Controller < ApplicationController
14
2
  end
@@ -1,4 +1,5 @@
1
- module <%= options[:namespace].camelize %>
2
- class <%= options[:name].camelize %> < ApplicationRecord
1
+ module <%= options[:name].split("/").first.camelize %>
2
+ def self.table_name_prefix
3
+ '<%= options[:name].split("/").first.downcase %>_'
3
4
  end
4
5
  end
@@ -1,26 +1,26 @@
1
1
  # @author Lovell McIlwain
2
2
  #
3
- # Authorization for article objects
3
+ # Authorization for <%= options[:name] %> objects
4
4
  class <%= options[:name].camelize %>Policy < ApplicationPolicy
5
- # Allow all users to access new article objects
5
+ # Allow all users to access new <%= options[:name] %>
6
6
  def new?
7
7
  true
8
8
  end
9
9
 
10
- # Allows owner of an article to edit the article
10
+ # Allows owner to edit <%= options[:name].camelize %>
11
11
  def edit?
12
12
  user == record.user
13
13
  end
14
14
 
15
- # Allows all users to create article objects
15
+ # Allows all users to create <%= options[:name].camelize %>
16
16
  alias_method :create?, :new?
17
17
 
18
- # Allows all users to view article objects
18
+ # Allows all users to view <%= options[:name].camelize %>
19
19
  alias_method :show?, :new?
20
20
 
21
- # Allows owner of an article to update an article object
21
+ # Allows owner to update an <%= options[:name].camelize %>
22
22
  alias_method :update?, :edit?
23
23
 
24
- # Allows owner of an object to remove an object
24
+ # Allows owner to remove an <%= options[:name].camelize %>
25
25
  alias_method :destroy?, :edit?
26
26
  end
@@ -1,5 +1,5 @@
1
1
  FactoryGirl.define do
2
- factory :<%= options[:name] %> do
2
+ factory :<%= options[:name].gsub("/", "_") %>, class: "<%= options[:name].camelize %>" do
3
3
 
4
4
  end
5
5
  end
@@ -1,9 +1,9 @@
1
1
  # Use with Pundit Matches: https://github.com/chrisalley/pundit-matchers
2
2
  require 'rails_helper'
3
3
  describe <%= options[:name].camelize %>Policy do
4
- subject { <%= options[:name].camelize %>Policy.new(user, <%= options[:name] %>) }
4
+ subject { <%= options[:name].camelize %>Policy.new(user, <%= options[:name].split("/").last %>) }
5
5
 
6
- let(:<%= options[:name] %>) { create :<%= options[:name] %> }
6
+ let(:<%= options[:name].split("/").last %>) { create :<%= options[:name].gsub("/", "_") %> }
7
7
 
8
8
  context 'for a visitor' do
9
9
  it {is_expected.to permit_action(:new)}
@@ -16,7 +16,7 @@ describe <%= options[:name].camelize %>Policy do
16
16
 
17
17
  context "for an admin" do
18
18
 
19
- let(:user) { <%= options[:name] %>.user }
19
+ let(:user) { <%= options[:name].split("/").last %>.user }
20
20
 
21
21
  it {is_expected.to permit_action(:new)}
22
22
  it {is_expected.to permit_action(:create)}
@@ -1,3 +1,3 @@
1
1
  module Myrails
2
- VERSION = "3.0.0"
2
+ VERSION = "3.1.0"
3
3
  end
data/lib/myrails.rb CHANGED
@@ -9,55 +9,46 @@ module Myrails
9
9
  TEMPLATES = source_root
10
10
  ENVIRONMENTS = %w(development test production)
11
11
 
12
- desc 'model', 'Generates and empty rails model with the given name and its related spec file Use --namespace=namespace to create a namespaced model'
12
+ desc 'model', "Generates a rails model with the given name along with its related spec file and namespace prefix for table creation. Use '/' to create a namespaced model"
13
13
  option :name, required: true
14
- option :namespace
15
14
  def model
16
- if options[:namespace]
17
- template 'rails/namespace_model.rb', "app/models/#{options[:namespace]}/#{options[:name]}.rb"
18
- template 'rspec/namespace_model.rb', "spec/models/#{options[:namespace]}/#{options[:name]}_spec.rb"
19
- else
20
- template 'rails/model.rb', "app/models/#{options[:name]}.rb"
21
- template 'rspec/model.rb', "spec/models/#{options[:name]}_spec.rb"
22
- end
15
+ template 'rails/model.rb', "app/models/#{options[:name].downcase}.rb"
16
+ template 'rails/namespace_model.rb', "app/models/#{options[:name].split("/").first.singularize.downcase}.rb" if options[:name].include?("/")
17
+ template 'rspec/model.rb', "spec/models/#{options[:name].downcase}_spec.rb"
23
18
  end
24
19
 
25
- desc 'controller', 'Generate a rails controller with the given name along with boiler plate code and related spec file. Add --namespace=NAME to create a namespaced controller'
20
+ desc 'controller', "Generates a rails controller with the given name along with related spec file. Use '/' to create a namespaced controller"
26
21
  option :name, required: true
27
- option :namespace
28
22
  def controller
29
- if options[:namespace]
30
- template 'rails/namespace_controller.rb', "app/controllers/#{options[:namespace]}/#{options[:name].pluralize}_controller.rb"
31
- template 'rails/parent_namespace_controller.rb', "app/controllers/#{options[:namespace]}/#{options[:namespace]}_controller.rb"
32
- template 'rspec/namespace_controller.rb', "spec/controllers/#{options[:namespace]}/#{options[:name].pluralize}_controller_spec.rb"
33
- run "mkdir -p app/views/#{options[:namespace]}/#{options[:name].pluralize}"
34
- else
35
- template 'rails/controller.rb', "app/controllers/#{options[:name].pluralize}_controller.rb"
36
- template 'rspec/controller.rb', "spec/controllers/#{options[:name].pluralize}_controller_spec.rb"
37
- run "mkdir -p app/views/#{options[:name].pluralize}"
23
+ template 'rails/controller.rb', "app/controllers/#{options[:name].downcase.pluralize}_controller.rb"
24
+ if options[:name].include?("/")
25
+ parent, child = options[:name].split("/")
26
+ template 'rails/namespace_controller.rb', "app/controllers/#{parent}/#{parent.downcase}_controller.rb"
38
27
  end
28
+ template 'rspec/controller.rb', "spec/controllers/#{options[:name].downcase.pluralize}_controller_spec.rb"
29
+ run "mkdir -p app/views/#{options[:name].downcase.pluralize}"
39
30
  end
40
31
 
41
- desc 'policy', 'Generate a pundit policy with the given name and a related spec file'
32
+ desc 'policy', "Generates a pundit policy with the given name and a related spec file. Use '/' to create a namespaced policy"
42
33
  option :name, required: true
43
34
  def policy
44
- template 'rails/pundit.rb', "app/policies/#{options[:name]}_policy.rb"
45
- template 'rspec/pundit.rb', "spec/policies/#{options[:name]}_policy_spec.rb"
35
+ template 'rails/pundit.rb', "app/policies/#{options[:name].downcase}_policy.rb"
36
+ template 'rspec/pundit.rb', "spec/policies/#{options[:name].downcase}_policy_spec.rb"
46
37
  end
47
38
 
48
- desc 'presenter', 'Generate a presenter class with the given name and a related spec file'
39
+ desc 'presenter', "Generates a presenter class with the given name and a related spec file. Use '/' to create a namespaced presenter"
49
40
  option :name, required: true
50
41
  def presenters
51
42
  copy_file 'presenters/base.rb', 'app/presenters/base_presenter.rb'
52
- template 'presenters/presenter.rb', "app/presenters/#{options[:name]}_presenter.rb"
43
+ template 'presenters/presenter.rb', "app/presenters/#{options[:name].downcase}_presenter.rb"
53
44
  copy_file 'presenters/presenter_config.rb', 'spec/support/configs/presenter.rb'
54
- template 'presenters/presenter_spec.rb', "spec/presenters/#{options[:name]}_presenter_spec.rb"
45
+ template 'presenters/presenter_spec.rb', "spec/presenters/#{options[:name].downcase}_presenter_spec.rb"
55
46
  end
56
47
 
57
- desc 'factory', 'Generate a factory_girl file for use with rspec'
48
+ desc 'factory', "Generates a factory_girl factory in the spec/factories directory. Use '/' to create a namespaced factory"
58
49
  option :name, required: true
59
50
  def factory
60
- template 'rspec/factory.rb', "spec/factories/#{options[:name]}.rb"
51
+ template 'rspec/factory.rb', "spec/factories/#{options[:name].downcase}.rb"
61
52
  end
62
53
 
63
54
  desc 'install_application_helper', 'Replace current application helper with one that has commonly used code'
@@ -98,15 +89,15 @@ gem 'rspec-rails', group: :test
98
89
  copy_file 'rspec/files.rb', 'spec/support/configs/files.rb'
99
90
  end
100
91
 
101
- desc 'install_mailer', 'Generate sendgrid initializer and mail interceptor'
92
+ desc 'sendgrid', 'Generate sendgrid initializer and mail interceptor'
102
93
  option :email, required: true
103
- def install_mailer
94
+ def sendgrid
104
95
  copy_file 'mailer/sendgrid.rb', 'config/initializers/sendgrid.rb'
105
96
  template 'mailer/dev_mail_interceptor.rb', 'app/mailers/dev_mail_interceptor.rb'
106
97
  ENVIRONMENTS.each do |environment|
107
98
  unless environment == 'production'
108
- inject_into_file "config/environments/#{environment}.rb", after: "# config.action_view.raise_on_missing_translations = true\n" do <<-CODE
109
- ActionMailer::Base.register_interceptor(DevMailInterceptor)
99
+ inject_into_file "config/environments/#{environment}.rb", after: "Rails.application.configure do\n" do <<-CODE
100
+ ActionMailer::Base.register_interceptor(DevMailInterceptor)
110
101
  CODE
111
102
  end
112
103
  end
@@ -518,6 +509,12 @@ require 'database_cleaner'
518
509
  install_footnotes
519
510
  git_init
520
511
  end
512
+
513
+ desc 'use_global_varables', 'creates and loads config/application.yml'
514
+ def use_global_variables
515
+ copy_file 'initializers/application_vars.rb', 'config/initializers/application_vars.rb'
516
+ copy_file 'rails/application.yml', 'config/application.yml'
517
+ end
521
518
  end
522
519
  end
523
520
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myrails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-03 00:00:00.000000000 Z
11
+ date: 2017-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,6 +122,7 @@ files:
122
122
  - lib/myrails/templates/engines/rakefile
123
123
  - lib/myrails/templates/heroku/Procfile
124
124
  - lib/myrails/templates/heroku/puma.rb
125
+ - lib/myrails/templates/initializers/application_vars.rb
125
126
  - lib/myrails/templates/layout/_error_messages.html.haml
126
127
  - lib/myrails/templates/layout/_footer.html.haml
127
128
  - lib/myrails/templates/layout/_info_messages.html.haml
@@ -142,12 +143,12 @@ files:
142
143
  - lib/myrails/templates/presenters/presenter.rb
143
144
  - lib/myrails/templates/presenters/presenter_config.rb
144
145
  - lib/myrails/templates/presenters/presenter_spec.rb
146
+ - lib/myrails/templates/rails/application.yml
145
147
  - lib/myrails/templates/rails/application_helper.rb
146
148
  - lib/myrails/templates/rails/controller.rb
147
149
  - lib/myrails/templates/rails/model.rb
148
150
  - lib/myrails/templates/rails/namespace_controller.rb
149
151
  - lib/myrails/templates/rails/namespace_model.rb
150
- - lib/myrails/templates/rails/parent_namespace_controller.rb
151
152
  - lib/myrails/templates/rails/pundit.rb
152
153
  - lib/myrails/templates/rspec/controller.rb
153
154
  - lib/myrails/templates/rspec/database_cleaner.rb
@@ -158,10 +159,7 @@ files:
158
159
  - lib/myrails/templates/rspec/javascript.rb
159
160
  - lib/myrails/templates/rspec/mailer.rb
160
161
  - lib/myrails/templates/rspec/model.rb
161
- - lib/myrails/templates/rspec/namespace_controller.rb
162
- - lib/myrails/templates/rspec/namespace_model.rb
163
162
  - lib/myrails/templates/rspec/pundit.rb
164
- - lib/myrails/templates/rspec/pundit_matchers.rb
165
163
  - lib/myrails/templates/rspec/request.rb
166
164
  - lib/myrails/templates/rspec/request_shared_example.rb
167
165
  - lib/myrails/templates/rspec/router.rb
@@ -196,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
194
  version: '0'
197
195
  requirements: []
198
196
  rubyforge_project:
199
- rubygems_version: 2.4.8
197
+ rubygems_version: 2.6.10
200
198
  signing_key:
201
199
  specification_version: 4
202
200
  summary: A thor backed generator for generating rails related files based on my style
@@ -1,4 +0,0 @@
1
- module <%= options[:namespace].camelize %>
2
- class <%= options[:namespace].camelize %>Controller < ApplicationController
3
- end
4
- end
@@ -1,100 +0,0 @@
1
- require 'rails_helper'
2
-
3
- module <%= options[:namespace].camelize %>
4
- # Does this controller require authentication?
5
- describe <%= options[:name].pluralize.camelize %>Controller do
6
- # let(:user) {create :user}
7
- let(:<%= options[:name].pluralize %>) {[]}
8
- let(:<%= options[:name].singularize %>) {create :<%= options[:name].singularize %>}
9
-
10
- # before {sign_in user}
11
-
12
- describe 'GET index' do
13
- before do
14
- 3.times {<%= options[:name].pluralize %> << create(:<%= options[:name].singularize %>)}
15
- get :index
16
- end
17
-
18
- it 'sets @<%= options[:name].pluralize %>' do
19
- expect(assigns[:<%= options[:name].pluralize %>]).to eq <%= options[:name].pluralize %>
20
- end
21
- end
22
-
23
- describe 'GET show' do
24
- before {get :show, params: {id: <%= options[:name].singularize %>.id}}
25
-
26
- it 'sets @<%= options[:name].singularize %>' do
27
- expect(assigns[:<%= options[:name].singularize %>]).to eq <%= options[:name].singularize %>
28
- end
29
- end
30
-
31
- describe 'GET new' do
32
- before {get :new}
33
-
34
- it 'sets @<%= options[:name].singularize %>' do
35
- expect(assigns[:<%= options[:name].singularize %>]).to be_a_new <%= options[:name].singularize.camelize %>
36
- end
37
- end
38
-
39
- describe 'POST create' do
40
- context 'successful create' do
41
- before {post :create, params: {<%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>)}}
42
-
43
- subject(:<%= options[:name].first %>){assigns[:<%= options[:name].singularize %>]}
44
-
45
- it 'redirects to :show'
46
- it 'sets @<%= options[:name].singularize %>'
47
- it 'sets flash[:success]'
48
- it 'tags the current_user as creator'
49
- end
50
-
51
- context 'unsuccessful create' do
52
- before {post :create, params: {<%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>, attr: nil)}}
53
-
54
- it 'renders :new template'
55
- it 'sets @<%= options[:name].singularize %>'
56
- it 'sets flash[:error]'
57
- end
58
- end
59
-
60
- describe 'GET edit' do
61
- before {get :edit, params: {id: <%= options[:name].singularize %>.id}}
62
-
63
- it 'sets @<%= options[:name].singularize %>' do
64
- expect(assigns[:<%= options[:name].singularize %>]).to eq <%= options[:name].singularize %>
65
- end
66
- end
67
-
68
- describe 'PUT/PATCH update' do
69
- context 'successful update' do
70
- before {put :update, params: {id: <%= options[:name].singularize %>.id, <%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>)}}
71
-
72
- subject(:<%= options[:name].first %>) {assigns[:<%= options[:name].singularize %>]}
73
-
74
- it 'redirects to :show'
75
- it 'sets @<%= options[:name].singularize %>'
76
- it 'sets flash[:success]'
77
- it 'tags current_user as updater'
78
- end
79
-
80
- context 'unsuccessful update' do
81
- before {put :update, params: {id: <%= options[:name].singularize %>.id, <%= options[:name].singularize %>: attributes_for(:<%= options[:name].singularize %>, attr: nil)}}
82
-
83
- it 'renders :edit template'
84
- it 'sets @<%= options[:name].singularize %>'
85
- it 'sets flash[:error]'
86
- end
87
- end
88
-
89
- describe 'DELETE destroy' do
90
- before {delete :destroy, params: {id: <%= options[:name].singularize %>.id}}
91
-
92
- it 'redirects to :index' do
93
- expect(response).to redirect_to <%= options[:name].pluralize %>_path
94
- end
95
- it 'sets @<%= options[:name].singularize %>'
96
- it 'deletes @<%= options[:name].singularize %>'
97
- it 'sets flash[success]'
98
- end
99
- end
100
- end
@@ -1,6 +0,0 @@
1
- require 'rails_helper'
2
-
3
- module <%= options[:namespace] %>
4
- describe <%= options[:name].camelize %> do
5
- end
6
- end
@@ -1,47 +0,0 @@
1
- RSpec::Matchers.define :permitted_to do |action|
2
- match do |policy|
3
- policy.public_send("#{action}?")
4
- end
5
-
6
- failure_message do |policy|
7
- "#{policy.class} does not permit #{action} on #{policy.record} for #{policy.user.inspect}."
8
- end
9
-
10
- failure_message_when_negated do |policy|
11
- "#{policy.class} does not forbid #{action} on #{policy.record} for #{policy.user.inspect}."
12
- end
13
- end
14
-
15
- def pundit_error
16
- Pundit::NotAuthorizedError
17
- end
18
-
19
- =begin
20
-
21
- example: spec/policies/projects_policy_spec.rb
22
-
23
- require 'rails_helper'
24
-
25
- describe ProjectPolicy do
26
- subject { ProjectPolicy.new(user, project) }
27
- let(:project) { Fabricate :project }
28
-
29
-
30
- context 'for a visitor' do
31
- it { should_not permitted_to(:create) }
32
- it { should_not permitted_to(:new) }
33
- it { should_not permitted_to(:update) }
34
- it { should_not permitted_to(:edit) }
35
- end
36
-
37
- context "for an admin" do
38
- let(:user) { Fabricate(:user, admin: true) }
39
-
40
- it { should permitted_to(:create) }
41
- it { should permitted_to(:new) }
42
- it { should permitted_to(:update) }
43
- it { should permitted_to(:edit) }
44
- end
45
- end
46
-
47
- =end