model_base_generators 0.2.4 → 0.3.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 +4 -4
- data/README.md +7 -0
- data/lib/generators/model_base/install_generator.rb +19 -0
- data/lib/generators/model_base/templates/app/controllers/concerns/authentication.rb +12 -0
- data/lib/generators/model_base/templates/spec/factories/users.rb +8 -0
- data/lib/generators/model_base/templates/spec/support/controller_macros.rb +18 -0
- data/lib/generators/model_base/templates/spec/support/devise.rb +16 -0
- data/lib/generators/model_base/templates/spec/support/field_assertions.rb +5 -0
- data/lib/model_base/version.rb +1 -1
- data/rails_template.rb +289 -0
- metadata +8 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b699cb53644860bfcf7b663b76ff234477311ea9
|
4
|
+
data.tar.gz: 10afb774b6eacb3704bfdbe3c46f522f1ec23e17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65d880b9527c27cd54de406409522077a4b65feb27c7bf4212b94c123d274a86d2161eabbcd9c5f568d4a96cfbcbb7d5d29306b25f9b77218d23ea298a98507d
|
7
|
+
data.tar.gz: 4c29670bc96f3e895a4cc7a7b5c1debe1008be6e1245e8e8d79d7eb3741369921798bdbd5ba94ad3ea89ba22aad8f1001235e47770eba63722be82493b131013
|
data/README.md
CHANGED
@@ -16,6 +16,10 @@ And then execute:
|
|
16
16
|
|
17
17
|
$ bundle
|
18
18
|
|
19
|
+
## Setup
|
20
|
+
|
21
|
+
$ bin/rails g model_base:install
|
22
|
+
|
19
23
|
## Usage
|
20
24
|
|
21
25
|
### 1. Generate your model
|
@@ -56,6 +60,9 @@ $ bin/rails g scaffold_controller issues
|
|
56
60
|
|
57
61
|
Run scaffold_controller **WITHOUT attributes**!
|
58
62
|
|
63
|
+
## Template for `rails new`
|
64
|
+
|
65
|
+
You can use `rails_template.rb` for `--template` option of `rails new`.
|
59
66
|
|
60
67
|
|
61
68
|
## Development
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module ModelBase
|
4
|
+
class InstallGenerator < ::Rails::Generators::Base
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
desc "Generate files to work with model_base"
|
8
|
+
|
9
|
+
def generate_files
|
10
|
+
[
|
11
|
+
'app/controllers/concerns/authentication.rb',
|
12
|
+
'spec/factories/users.rb',
|
13
|
+
'spec/support/controller_macros.rb',
|
14
|
+
'spec/support/devise.rb',
|
15
|
+
'spec/support/field_assertions.rb',
|
16
|
+
].each{|f| template f, f }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module ControllerMacros
|
2
|
+
def devise_login(key, user)
|
3
|
+
@request.env["devise.mapping"] = Devise.mappings[key]
|
4
|
+
sign_in(user)
|
5
|
+
end
|
6
|
+
|
7
|
+
def devise_user_login(user)
|
8
|
+
devise_login(:user, user)
|
9
|
+
end
|
10
|
+
|
11
|
+
def login_admin
|
12
|
+
before(:each){ devise_login(:admin, FactoryGirl.create(:admin)) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def login_user
|
16
|
+
before(:each){ devise_login(:user, FactoryGirl.create(:user)) }
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-(and-RSpec)
|
2
|
+
RSpec.configure do |config|
|
3
|
+
config.with_options(:type => :controller) do |c|
|
4
|
+
c.include Devise::Test::ControllerHelpers
|
5
|
+
c.include ControllerMacros
|
6
|
+
c.extend ControllerMacros
|
7
|
+
end
|
8
|
+
|
9
|
+
# For request spec
|
10
|
+
# https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
|
11
|
+
# http://qiita.com/gakkie/items/40e5678af7b63afc14df
|
12
|
+
config.include Warden::Test::Helpers, :type => :request
|
13
|
+
config.before :suite do
|
14
|
+
Warden.test_mode!
|
15
|
+
end
|
16
|
+
end
|
data/lib/model_base/version.rb
CHANGED
data/rails_template.rb
ADDED
@@ -0,0 +1,289 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# http://guides.rubyonrails.org/rails_application_templates.html
|
3
|
+
# https://github.com/morizyun/rails4_template/blob/master/app_template.rb
|
4
|
+
# https://github.com/search?q=rails%20template&source=c
|
5
|
+
#
|
6
|
+
# The method "insert_to_file" is defined by thor instead of rails
|
7
|
+
# https://github.com/erikhuda/thor/blob/master/lib/thor/actions/inject_into_file.rb
|
8
|
+
|
9
|
+
require 'bundler'
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
def git_add_commit(msg, path = '.')
|
13
|
+
git add: path
|
14
|
+
raise "Failed to git add #{path.inspect} with exit code #{$?.inspect}" unless $? == 0
|
15
|
+
git commit: "-m '#{msg}'"
|
16
|
+
raise "Failed to git commit #{msg.inspect} with exit code #{$?.inspect}" unless $? == 0
|
17
|
+
end
|
18
|
+
|
19
|
+
def generate_with_git(arg)
|
20
|
+
generate arg, '-f'
|
21
|
+
git_add_commit "rails generate #{arg}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def git_run(cmd)
|
25
|
+
run cmd
|
26
|
+
raise "Failed to run: #{cmd}" unless $? == 0
|
27
|
+
git_add_commit cmd
|
28
|
+
end
|
29
|
+
|
30
|
+
def download_file(dest, url)
|
31
|
+
FileUtils.mkdir_p File.dirname(dest)
|
32
|
+
git_run "curl #{url} -o #{dest}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def git_rake(*args)
|
36
|
+
git_run "bin/rake %s" % args.join(" ")
|
37
|
+
end
|
38
|
+
|
39
|
+
def uncomment(path, target)
|
40
|
+
text = IO.binread(path)
|
41
|
+
text.sub!(/\#\s*#{Regexp.escape(target)}/, target)
|
42
|
+
IO.binwrite(path, text)
|
43
|
+
end
|
44
|
+
|
45
|
+
git :init unless ENV['SKIP_GIT_INIT'] =~ /true|yes|on|1/i
|
46
|
+
git_add_commit "#{File.basename($PROGRAM_NAME)} #{ARGV.join(' ')}"
|
47
|
+
|
48
|
+
if File.exist?('README.rdoc') && File.exist?('README.md')
|
49
|
+
run 'mv README.rdoc README.md'
|
50
|
+
git_add_commit "Rename README.rdoc to README.md"
|
51
|
+
end
|
52
|
+
|
53
|
+
## Gemfile
|
54
|
+
|
55
|
+
gem "twitter-bootstrap-rails"
|
56
|
+
|
57
|
+
gem 'devise'
|
58
|
+
|
59
|
+
# https://github.com/CanCanCommunity/cancancan
|
60
|
+
gem 'cancancan'
|
61
|
+
|
62
|
+
# https://github.com/brainspec/enumerize
|
63
|
+
gem 'enumerize'
|
64
|
+
|
65
|
+
gem "kaminari"
|
66
|
+
|
67
|
+
# # https://github.com/brainspec/enumerize
|
68
|
+
# gem 'enumerize'
|
69
|
+
|
70
|
+
# https://github.com/sinsoku/pretty_validation
|
71
|
+
# http://sinsoku.hatenablog.com/entry/2015/11/15/103924
|
72
|
+
gem 'pretty_validation', git: "https://github.com/akm/pretty_validation.git"
|
73
|
+
|
74
|
+
# # https://github.com/sferik/rails_admin
|
75
|
+
# gem 'rails_admin' unless ENV['DISABLE_RAILS_ADMIN'] =~ /true|yes|on|1/i
|
76
|
+
|
77
|
+
# Use dotenv to load environment variables
|
78
|
+
gem 'dotenv-rails', :require => 'dotenv/rails-now'
|
79
|
+
|
80
|
+
gem_group :development, :test do
|
81
|
+
gem "rspec"
|
82
|
+
gem "rspec-rails"
|
83
|
+
gem 'simplecov' , require: false
|
84
|
+
gem 'simplecov-rcov', require: false
|
85
|
+
gem "pry-rails"
|
86
|
+
gem "pry-byebug"
|
87
|
+
gem "pry-stack_explorer"
|
88
|
+
gem "fuubar"
|
89
|
+
gem "factory_girl"
|
90
|
+
gem "factory_girl_rails"
|
91
|
+
gem "annotate"
|
92
|
+
gem "rails_best_practices"
|
93
|
+
# https://github.com/flyerhzm/bullet
|
94
|
+
gem 'bullet'
|
95
|
+
end
|
96
|
+
|
97
|
+
gem_group :development do
|
98
|
+
gem "better_errors"
|
99
|
+
gem 'binding_of_caller'
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
gem_group :test do
|
104
|
+
gem 'rails-controller-testing'
|
105
|
+
end
|
106
|
+
|
107
|
+
git_add_commit 'Add gems to Gemfile'
|
108
|
+
|
109
|
+
Bundler.with_clean_env do
|
110
|
+
run 'bundle install'
|
111
|
+
end
|
112
|
+
|
113
|
+
git_add_commit 'bundle install'
|
114
|
+
|
115
|
+
# set config/application.rb
|
116
|
+
application do
|
117
|
+
%q{
|
118
|
+
config.time_zone = 'Tokyo'
|
119
|
+
config.active_record.default_timezone = :local
|
120
|
+
|
121
|
+
config.i18n.default_locale = :ja
|
122
|
+
|
123
|
+
config.generators do |g|
|
124
|
+
# g.orm :mongoid
|
125
|
+
g.test_framework :rspec
|
126
|
+
g.factory_girl dir: 'spec/factories'
|
127
|
+
# g.template_engine :haml
|
128
|
+
end
|
129
|
+
}
|
130
|
+
end
|
131
|
+
|
132
|
+
git_add_commit 'Add settings of timezone, locale and generators'
|
133
|
+
|
134
|
+
# Rails Japanese locale
|
135
|
+
download_file "config/locales/ja.yml", "https://raw.githubusercontent.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml"
|
136
|
+
|
137
|
+
## rspec
|
138
|
+
generate_with_git 'rspec:install'
|
139
|
+
download_file ".rspec", "https://raw.githubusercontent.com/akm/rails_template/master/.rspec"
|
140
|
+
|
141
|
+
uncomment('spec/rails_helper.rb', "Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }")
|
142
|
+
git_add_commit 'Enable rb files under spec/support'
|
143
|
+
|
144
|
+
|
145
|
+
|
146
|
+
## simplecov
|
147
|
+
insert_into_file 'spec/rails_helper.rb', <<EOS, before: "# This file is copied to spec/ when you run 'rails generate rspec:install'"
|
148
|
+
# https://github.com/colszowka/simplecov
|
149
|
+
require 'simplecov'
|
150
|
+
SimpleCov.start 'rails'
|
151
|
+
|
152
|
+
EOS
|
153
|
+
git_add_commit 'Enable simplecov'
|
154
|
+
|
155
|
+
|
156
|
+
## twitter-bootstrap-rails
|
157
|
+
generate_with_git 'bootstrap:install static'
|
158
|
+
generate_with_git 'bootstrap:layout'
|
159
|
+
|
160
|
+
## kaminari
|
161
|
+
generate_with_git 'kaminari:views bootstrap3'
|
162
|
+
|
163
|
+
## Devise
|
164
|
+
generate_with_git 'devise:install'
|
165
|
+
download_file "config/locales/ja.devise.yml", "https://gist.githubusercontent.com/kawamoto/4729292/raw/80fd53034289be926de2e2206c2ab7afbac35993/devise.ja.yml"
|
166
|
+
|
167
|
+
# Flash messages are included in bootstrap views
|
168
|
+
# insert_into_file 'app/views/layouts/application.html.erb', <<EOS , after: '<body>'
|
169
|
+
# <p class="notice"><%= notice %></p>
|
170
|
+
# <p class="alert"><%= alert %></p>
|
171
|
+
#
|
172
|
+
# EOS
|
173
|
+
|
174
|
+
insert_into_file 'config/environments/development.rb', <<EOS, after: 'config.action_mailer.raise_delivery_errors = false'
|
175
|
+
|
176
|
+
# for devise
|
177
|
+
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
|
178
|
+
EOS
|
179
|
+
|
180
|
+
|
181
|
+
root_path = (ENV['DISABLE_RAILS_ADMIN'] =~ /true|yes|on|1/i) ? 'welcome#index' : 'rails_admin/main#dashboard'
|
182
|
+
insert_into_file 'config/routes.rb', <<"EOS", after: 'Rails.application.routes.draw do'
|
183
|
+
|
184
|
+
# root to: "devise/sessions#new" # Sign in
|
185
|
+
root to: "#{root_path}" # TODO Change top page
|
186
|
+
|
187
|
+
EOS
|
188
|
+
git_add_commit 'Following instructions of devise:install'
|
189
|
+
|
190
|
+
generate_with_git 'devise User'
|
191
|
+
|
192
|
+
insert_into_file 'app/models/user.rb', <<EOS, before: 'end'
|
193
|
+
|
194
|
+
class << self
|
195
|
+
def current_user=(user)
|
196
|
+
Thread.current[:current_user] = user
|
197
|
+
end
|
198
|
+
|
199
|
+
def current_user
|
200
|
+
Thread.current[:current_user]
|
201
|
+
end
|
202
|
+
|
203
|
+
def current(user)
|
204
|
+
orig_user, User.current_user = User.current_user, user
|
205
|
+
begin
|
206
|
+
return yield
|
207
|
+
ensure
|
208
|
+
User.current_user = orig_user
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
|
213
|
+
EOS
|
214
|
+
git_add_commit 'Add User.current_user'
|
215
|
+
|
216
|
+
|
217
|
+
# https://github.com/plataformatec/devise/wiki/I18n#japanese-devisejayml
|
218
|
+
download_file "config/locales/ja.devise.yml", "https://gist.githubusercontent.com/satour/6c15f27211fdc0de58b4/raw/d4b5815295c65021790569c9be447d15760f4957/devise.ja.yml"
|
219
|
+
|
220
|
+
insert_into_file 'spec/rails_helper.rb', <<EOS, after: '# Add additional requires below this line. Rails is not loaded until this point!'
|
221
|
+
|
222
|
+
# For spec/controllers
|
223
|
+
# https://github.com/plataformatec/devise/wiki/How-To:-Test-controllers-with-Rails-3-and-4-(and-RSpec)
|
224
|
+
require 'devise'
|
225
|
+
|
226
|
+
# For spec/requests
|
227
|
+
# https://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara
|
228
|
+
|
229
|
+
EOS
|
230
|
+
git_add_commit 'Load devise on rails_helper'
|
231
|
+
|
232
|
+
## cancancan
|
233
|
+
generate_with_git 'cancan:ability'
|
234
|
+
insert_into_file 'app/models/ability.rb', <<EOS, after: ' # https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities'
|
235
|
+
|
236
|
+
can :manage, :all
|
237
|
+
EOS
|
238
|
+
|
239
|
+
## bullet
|
240
|
+
insert_into_file 'config/environments/development.rb', <<EOS, after: " # config.action_view.raise_on_missing_translations = true"
|
241
|
+
|
242
|
+
config.after_initialize do
|
243
|
+
Bullet.enable = true
|
244
|
+
Bullet.alert = false
|
245
|
+
Bullet.bullet_logger = true
|
246
|
+
Bullet.console = true
|
247
|
+
# Bullet.growl = true
|
248
|
+
# Bullet.xmpp = { :account => 'bullets_account@jabber.org',
|
249
|
+
# :password => 'bullets_password_for_jabber',
|
250
|
+
# :receiver => 'your_account@jabber.org',
|
251
|
+
# :show_online_status => true }
|
252
|
+
Bullet.rails_logger = true
|
253
|
+
# Bullet.honeybadger = true
|
254
|
+
# Bullet.bugsnag = true
|
255
|
+
# Bullet.airbrake = true
|
256
|
+
# Bullet.rollbar = true
|
257
|
+
# Bullet.add_footer = true
|
258
|
+
# Bullet.stacktrace_includes = [ 'your_gem', 'your_middleware' ]
|
259
|
+
# Bullet.stacktrace_excludes = [ 'their_gem', 'their_middleware' ]
|
260
|
+
# Bullet.slack = { webhook_url: 'http://some.slack.url', foo: 'bar' }
|
261
|
+
end
|
262
|
+
|
263
|
+
EOS
|
264
|
+
git_add_commit 'Add config for bullet'
|
265
|
+
|
266
|
+
|
267
|
+
# ## rails_admin
|
268
|
+
# unless ENV['DISABLE_RAILS_ADMIN'] =~ /true|yes|on|1/i
|
269
|
+
# generate_with_git 'rails_admin:install'
|
270
|
+
# download_file "config/locales/ja.rails_admin.yml", "https://raw.githubusercontent.com/starchow/rails_admin-i18n/master/locales/ja.yml"
|
271
|
+
# end
|
272
|
+
|
273
|
+
## model_base_generators
|
274
|
+
generate_with_git 'model_base:install'
|
275
|
+
|
276
|
+
|
277
|
+
## DB
|
278
|
+
git_rake "db:create db:migrate"
|
279
|
+
|
280
|
+
## gitguard
|
281
|
+
gem_group :development do
|
282
|
+
# https://github.com/akm/gitguard
|
283
|
+
gem 'gitguard'
|
284
|
+
end
|
285
|
+
|
286
|
+
generate_with_git "gitguard:install"
|
287
|
+
|
288
|
+
## The End
|
289
|
+
git commit: "-m \"\[COMPLETE\] rails new with akm/rails_template\" --allow-empty "
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: model_base_generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- akm
|
@@ -270,6 +270,12 @@ files:
|
|
270
270
|
- example/spec/views/projects/new.html.erb_spec.rb
|
271
271
|
- example/spec/views/projects/show.html.erb_spec.rb
|
272
272
|
- example/tmp/.keep
|
273
|
+
- lib/generators/model_base/install_generator.rb
|
274
|
+
- lib/generators/model_base/templates/app/controllers/concerns/authentication.rb
|
275
|
+
- lib/generators/model_base/templates/spec/factories/users.rb
|
276
|
+
- lib/generators/model_base/templates/spec/support/controller_macros.rb
|
277
|
+
- lib/generators/model_base/templates/spec/support/devise.rb
|
278
|
+
- lib/generators/model_base/templates/spec/support/field_assertions.rb
|
273
279
|
- lib/model_base.rb
|
274
280
|
- lib/model_base/column_attribute.rb
|
275
281
|
- lib/model_base/config.rb
|
@@ -299,6 +305,7 @@ files:
|
|
299
305
|
- lib/templates/rspec/scaffold/routing_spec.rb
|
300
306
|
- lib/templates/rspec/scaffold/show_spec.rb
|
301
307
|
- model_base_generators.gemspec
|
308
|
+
- rails_template.rb
|
302
309
|
homepage: https://github.com/akm/model_base_generators
|
303
310
|
licenses:
|
304
311
|
- MIT
|