codeland-starter 0.0.1 → 0.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 +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +11 -0
- data/README.md +46 -1
- data/codeland-starter.gemspec +0 -1
- data/lib/codeland/starter.rb +5 -1
- data/lib/codeland/starter/codeland-starter.yml +2 -0
- data/lib/codeland/starter/configuration.rb +2 -2
- data/lib/codeland/starter/integrations/heroku.rb +20 -3
- data/lib/codeland/starter/version.rb +1 -1
- data/spec/fixtures/heroku_collaborator.json +1 -0
- data/spec/spec_helper.rb +5 -1
- data/spec/starter/integrations/heroku_spec.rb +90 -10
- data/template/codeland.rb +40 -16
- data/template/files/app/assets/javascripts/flash.js.coffee.erb +1 -1
- data/template/files/app/assets/stylesheets/application.scss +2 -2
- metadata +6 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c1d94d3918154b96129cfa2df0e5cb8c026d3c3
|
4
|
+
data.tar.gz: f53705e4b7049dc7d66e762c29d69bd318af5a80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 241405887b27f75e9d1d5e36f177677b9de8d0c214cd3d3a6b40b54af44dad88b2df738c142761cd877e41a4ba963faa14b9be7d71ab6ed2a2c4001d6ed6d10d
|
7
|
+
data.tar.gz: a45a8326e905c027838650eab1d7da087b067edaec43eb1464ed9eea1d5972b1740da46d914c8c0b99031c4114ceff7d1b0a4a95bc3783406987ebd1a0d4b2b7
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# Codeland::Starter
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/codeland-starter)
|
3
4
|
[](https://codeclimate.com/github/codelandev/codeland-starter) [](https://travis-ci.org/codelandev/codeland-starter) [](https://codeclimate.com/github/codelandev/codeland-starter)
|
4
5
|
|
5
6
|
Create [Ruby on Rails](http://rubyonrails.org/) projects based on [Codeland's](http://codeland.com.br) template with [integrations](#integrations).
|
@@ -32,6 +33,39 @@ integrations:
|
|
32
33
|
$ codeland-starter create ProjectName
|
33
34
|
```
|
34
35
|
|
36
|
+
## What do you (can) get?
|
37
|
+
|
38
|
+
- PostgreSQL
|
39
|
+
- Ruby version in Gemfile
|
40
|
+
- [Slim](http://slim-lang.com/)
|
41
|
+
- Skip Rails generators (javascripts, stylesheets, helpers)
|
42
|
+
- Brazilian time and locale
|
43
|
+
- Front-end setup
|
44
|
+
- [Heroku](https://www.heroku.com/) setup
|
45
|
+
- Gems:
|
46
|
+
- [RSpec](http://rspec.info/)
|
47
|
+
- [Factory girl](https://github.com/thoughtbot/factory_girl_rails)
|
48
|
+
- [Simplecov](https://github.com/colszowka/simplecov)
|
49
|
+
- [Database cleaner](https://github.com/DatabaseCleaner/database_cleaner)
|
50
|
+
- [Shoulda matchers](https://github.com/thoughtbot/shoulda-matchers)
|
51
|
+
- [Cabybara](http://jnicklas.github.io/capybara/)
|
52
|
+
- [Selenium](https://rubygems.org/gems/selenium-webdriver)
|
53
|
+
- [Initjs](https://github.com/josemarluedke/initjs)
|
54
|
+
- [Rails-i18n](https://github.com/svenfuchs/rails-i18n)
|
55
|
+
- [Devise](https://github.com/plataformatec/devise)
|
56
|
+
- [ActiveAdmin](https://github.com/gregbell/active_admin)
|
57
|
+
- [Simpleform](https://github.com/plataformatec/simple_form)
|
58
|
+
- [Pundit](https://github.com/elabs/pundit)
|
59
|
+
- [Autoprefixer-rails](https://github.com/ai/autoprefixer-rails)
|
60
|
+
- [Bootstrap](https://github.com/twbs/bootstrap-sass)
|
61
|
+
- [Font-awesome](https://github.com/bokmann/font-awesome-rails)
|
62
|
+
- [NProgress](https://github.com/caarlos0/nprogress-rails)
|
63
|
+
- [Draper](https://github.com/drapergem/draper)
|
64
|
+
- [Rails 12factor](https://github.com/heroku/rails_12factor)
|
65
|
+
- [Thin](http://code.macournoyer.com/thin/) (development)
|
66
|
+
- [Rack Profiler](https://github.com/MiniProfiler/rack-mini-profiler) (development)
|
67
|
+
- [Passenger](https://www.phusionpassenger.com/) (production)
|
68
|
+
|
35
69
|
## Integrations
|
36
70
|
|
37
71
|
### Heroku
|
@@ -40,13 +74,24 @@ $ codeland-starter create ProjectName
|
|
40
74
|
$ heroku plugins:install git@github.com:heroku/heroku-oauth.git
|
41
75
|
$ heroku authorizations:create -d "some text"
|
42
76
|
```
|
43
|
-
Paste the `Token` in
|
77
|
+
Paste the `Token` in `codeland-starter.yml`
|
44
78
|
|
45
79
|
```yaml
|
46
80
|
heroku:
|
47
81
|
oauth_token: PASTE-YOUR-TOKEN-HERE
|
48
82
|
```
|
49
83
|
|
84
|
+
#### Collaborators
|
85
|
+
|
86
|
+
Has a team? List them as an array in `codeland-starter.yml`
|
87
|
+
```yaml
|
88
|
+
heroku:
|
89
|
+
users:
|
90
|
+
- contato@codeland.com.br
|
91
|
+
- another@email.com
|
92
|
+
- email@example.com
|
93
|
+
```
|
94
|
+
|
50
95
|
## Contributing
|
51
96
|
|
52
97
|
1. Fork it ( https://github.com/codelandev/codeland-starter/fork )
|
data/codeland-starter.gemspec
CHANGED
@@ -28,6 +28,5 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency 'webmock', '~> 1.20.3'
|
29
29
|
spec.add_development_dependency 'simplecov', '~> 0.9.1'
|
30
30
|
spec.add_development_dependency 'simplecov-console'
|
31
|
-
spec.add_development_dependency 'pry'
|
32
31
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4.1'
|
33
32
|
end
|
data/lib/codeland/starter.rb
CHANGED
@@ -10,7 +10,11 @@ module Codeland
|
|
10
10
|
ROOT_PATH = File.join(File.dirname(__FILE__), '..', '..')
|
11
11
|
|
12
12
|
class << self
|
13
|
-
attr_reader :name
|
13
|
+
attr_reader :name
|
14
|
+
|
15
|
+
def config
|
16
|
+
@config ||= Configuration.new
|
17
|
+
end
|
14
18
|
|
15
19
|
def create_project(name, yaml_file)
|
16
20
|
@name = name
|
@@ -8,8 +8,8 @@ module Codeland
|
|
8
8
|
|
9
9
|
DEFAULT_FILENAME = 'codeland-starter.yml'
|
10
10
|
|
11
|
-
def initialize(yaml_file)
|
12
|
-
@yaml = if File.exists?(yaml_file)
|
11
|
+
def initialize(yaml_file = nil)
|
12
|
+
@yaml = if yaml_file && File.exists?(yaml_file)
|
13
13
|
YAML.load_file(File.open(yaml_file))
|
14
14
|
elsif File.exists?(default_yaml_file)
|
15
15
|
YAML.load_file(File.open(default_yaml_file))
|
@@ -36,7 +36,10 @@ module Codeland
|
|
36
36
|
@app = create_random_app
|
37
37
|
@success = true
|
38
38
|
ensure
|
39
|
-
|
39
|
+
if success?
|
40
|
+
add_git_remote
|
41
|
+
add_collaborators
|
42
|
+
end
|
40
43
|
end
|
41
44
|
end
|
42
45
|
|
@@ -66,7 +69,7 @@ module Codeland
|
|
66
69
|
api.app.create({
|
67
70
|
:name => app_name,
|
68
71
|
:region => 'us',
|
69
|
-
:stack => 'cedar'
|
72
|
+
:stack => 'cedar-14'
|
70
73
|
})
|
71
74
|
end
|
72
75
|
|
@@ -79,7 +82,21 @@ module Codeland
|
|
79
82
|
end
|
80
83
|
|
81
84
|
def add_git_remote
|
82
|
-
system("git remote add heroku #{app['git_url']}")
|
85
|
+
system("git remote add heroku #{app['git_url']}")
|
86
|
+
end
|
87
|
+
|
88
|
+
def add_collaborators
|
89
|
+
users = Configuration['heroku']['users']
|
90
|
+
if users && users.is_a?(Array)
|
91
|
+
users.each do |user|
|
92
|
+
begin
|
93
|
+
api.collaborator.create(app['id'], { :user => user })
|
94
|
+
puts "Collaborator #{user} was added"
|
95
|
+
rescue Excon::Errors::UnprocessableEntity
|
96
|
+
puts "Collaborator #{user} was not added"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
83
100
|
end
|
84
101
|
end
|
85
102
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"created_at"=>"2014-07-12T23:04:58Z", "id"=>"some-valid-id", "updated_at"=>"2014-07-12T23:04:58Z", "user"=>{"id"=>"some-user-id-here", "email"=>"my@email.com"}, "role"=>"owner"}]
|
data/spec/spec_helper.rb
CHANGED
@@ -15,7 +15,11 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[*formaters]
|
|
15
15
|
SimpleCov.start
|
16
16
|
|
17
17
|
require 'webmock/rspec'
|
18
|
-
|
18
|
+
if ENV['CI']
|
19
|
+
WebMock.disable_net_connect!(:allow => 'codeclimate.com')
|
20
|
+
else
|
21
|
+
WebMock.disable_net_connect!
|
22
|
+
end
|
19
23
|
require 'codeland/starter'
|
20
24
|
|
21
25
|
# This file was generated by the `rspec --init` command. Conventionally, all
|
@@ -4,7 +4,7 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
4
4
|
def stub_heroku(content = nil, status = 201, app_name = name)
|
5
5
|
stub_request(:post, 'https://api.heroku.com/apps')
|
6
6
|
.with(
|
7
|
-
:body => { :name => name, :region => 'us', :stack => 'cedar' },
|
7
|
+
:body => { :name => name, :region => 'us', :stack => 'cedar-14' },
|
8
8
|
:headers => {
|
9
9
|
'Accept' => 'application/vnd.heroku+json; version=3',
|
10
10
|
'Authorization' => "Bearer #{heroku_token}",
|
@@ -18,7 +18,35 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
18
18
|
def stub_heroku_error(error, app_name = name)
|
19
19
|
stub_request(:post, 'https://api.heroku.com/apps')
|
20
20
|
.with(
|
21
|
-
:body => { :name => app_name, :region => 'us', :stack => 'cedar' },
|
21
|
+
:body => { :name => app_name, :region => 'us', :stack => 'cedar-14' },
|
22
|
+
:headers => {
|
23
|
+
'Accept' => 'application/vnd.heroku+json; version=3',
|
24
|
+
'Authorization' => "Bearer #{heroku_token}",
|
25
|
+
'Content-Type' => 'application/json',
|
26
|
+
'Host' => 'api.heroku.com:443',
|
27
|
+
'User-Agent' => "excon/#{Excon::VERSION}"
|
28
|
+
}
|
29
|
+
).to_raise(error)
|
30
|
+
end
|
31
|
+
|
32
|
+
def stub_heroku_collaborator(content = nil, status = 201, user)
|
33
|
+
stub_request(:post, 'https://api.heroku.com/apps/id/collaborators')
|
34
|
+
.with(
|
35
|
+
:body => { :user => user },
|
36
|
+
:headers => {
|
37
|
+
'Accept' => 'application/vnd.heroku+json; version=3',
|
38
|
+
'Authorization' => "Bearer #{heroku_token}",
|
39
|
+
'Content-Type' => 'application/json',
|
40
|
+
'Host' => 'api.heroku.com:443',
|
41
|
+
'User-Agent' => "excon/#{Excon::VERSION}"
|
42
|
+
}
|
43
|
+
).to_return(:status => status, :body => content)
|
44
|
+
end
|
45
|
+
|
46
|
+
def stub_heroku_collaborator_error(error, email)
|
47
|
+
stub_request(:post, 'https://api.heroku.com/apps/id/collaborators')
|
48
|
+
.with(
|
49
|
+
:body => { :user => email },
|
22
50
|
:headers => {
|
23
51
|
'Accept' => 'application/vnd.heroku+json; version=3',
|
24
52
|
'Authorization' => "Bearer #{heroku_token}",
|
@@ -35,6 +63,10 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
35
63
|
File.open(File.dirname(__FILE__) + '/../../fixtures/heroku_app.json', 'rb')
|
36
64
|
end
|
37
65
|
|
66
|
+
let!(:heroku_collaborator_file) do
|
67
|
+
File.open(File.dirname(__FILE__) + '/../../fixtures/heroku_collaborator.json', 'rb')
|
68
|
+
end
|
69
|
+
|
38
70
|
let!(:installed_yaml) { File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'codeland', 'starter', 'codeland-starter.yml') }
|
39
71
|
|
40
72
|
|
@@ -43,7 +75,7 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
43
75
|
|
44
76
|
context 'api' do
|
45
77
|
context 'with heroku key in YAML' do
|
46
|
-
before { expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(2).times.and_return({'oauth_token' => heroku_token}) }
|
78
|
+
before { expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(2).times.and_return({'oauth_token' => heroku_token, 'users' => ['email@example.com']}) }
|
47
79
|
|
48
80
|
it 'sets @api' do
|
49
81
|
expected_kind = PlatformAPI::Client
|
@@ -75,7 +107,7 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
75
107
|
let!(:name) { 'MyAppName' }
|
76
108
|
before { stub_heroku_error(Excon::Errors::Unauthorized) }
|
77
109
|
before { expect(Codeland::Starter).to receive(:config).and_return(Codeland::Starter::Configuration.new(installed_yaml)) }
|
78
|
-
before { expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(2).times.and_return({'oauth_token' => heroku_token}) }
|
110
|
+
before { expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(2).times.and_return({'oauth_token' => heroku_token, 'users' => ['email@example.com']}) }
|
79
111
|
before { allow_any_instance_of(described_class).to receive(:add_git_remote).and_return(nil) }
|
80
112
|
|
81
113
|
it 'raises MissingYAML' do
|
@@ -87,13 +119,15 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
87
119
|
subject { described_class.new }
|
88
120
|
let!(:name) { 'codeland' }
|
89
121
|
before do
|
90
|
-
expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(2).times.and_return({'oauth_token' => heroku_token})
|
122
|
+
expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(2).times.and_return({'oauth_token' => heroku_token, 'users' => ['email@example.com']})
|
91
123
|
error = Excon::Errors::UnprocessableEntity.new("UnprocessableEntity")
|
124
|
+
stub_heroku_collaborator(heroku_collaborator_file, 201, 'email@example.com')
|
92
125
|
stub_heroku_error(error, name)
|
93
126
|
stub_heroku(heroku_file, 201, nil)
|
94
127
|
is_expected.to receive(:create_app).with(name).once.and_raise(error)
|
95
128
|
is_expected.to receive(:create_app).with(no_args).once
|
96
129
|
allow_any_instance_of(described_class).to receive(:add_git_remote).and_return(nil)
|
130
|
+
allow_any_instance_of(described_class).to receive(:add_collaborators).and_return(nil)
|
97
131
|
end
|
98
132
|
|
99
133
|
it 'calls create with empty name' do
|
@@ -102,27 +136,34 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
102
136
|
end
|
103
137
|
|
104
138
|
context 'app with new unique name' do
|
105
|
-
before
|
106
|
-
|
139
|
+
before do
|
140
|
+
stub_heroku(heroku_file)
|
141
|
+
end
|
107
142
|
|
108
143
|
subject { described_class.new }
|
109
144
|
|
110
145
|
let!(:name) { 'new-app-for-codeland' }
|
111
146
|
|
112
147
|
context 'returned json have some keys' do
|
113
|
-
before {
|
114
|
-
before
|
148
|
+
before { expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(3).times.and_return({'oauth_token' => heroku_token, 'users' => ['email@example.com']}) }
|
149
|
+
before do
|
150
|
+
stub_heroku_collaborator(heroku_collaborator_file, 201, 'email@example.com')
|
151
|
+
subject.create
|
152
|
+
allow_any_instance_of(described_class).to receive(:add_git_remote).and_return(nil)
|
153
|
+
end
|
115
154
|
|
116
155
|
%w(git_url id name web_url).each do |key|
|
117
156
|
it "includes #{key} key" do
|
118
|
-
expect(JSON.parse(subject.app)).to have_key(
|
157
|
+
expect(JSON.parse(subject.app)).to have_key(key)
|
119
158
|
end
|
120
159
|
end
|
121
160
|
end
|
122
161
|
|
123
162
|
context 'git remote' do
|
163
|
+
before { expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(3).times.and_return({'oauth_token' => heroku_token, 'users' => ['email@example.com']}) }
|
124
164
|
before do
|
125
165
|
expected = "git remote add heroku git_url"
|
166
|
+
stub_heroku_collaborator(heroku_collaborator_file, 201, 'email@example.com')
|
126
167
|
expect(subject).to receive(:system).with(expected).once
|
127
168
|
end
|
128
169
|
|
@@ -130,6 +171,45 @@ RSpec.describe Codeland::Starter::Integrations::Heroku do
|
|
130
171
|
subject.create
|
131
172
|
end
|
132
173
|
end
|
174
|
+
|
175
|
+
context 'collaborators' do
|
176
|
+
context 'with collaborators' do
|
177
|
+
before { expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(3).times.and_return({'oauth_token' => heroku_token, 'users' => ['email@example.com']}) }
|
178
|
+
|
179
|
+
context 'success' do
|
180
|
+
before do
|
181
|
+
stub_heroku_collaborator(heroku_collaborator_file, 201, 'email@example.com')
|
182
|
+
expect_any_instance_of(PlatformAPI::Collaborator).to receive(:create).with('id', { :user => 'email@example.com'}).once
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'calls api.collaborator.create' do
|
186
|
+
subject.create
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
context 'error' do
|
191
|
+
before do
|
192
|
+
error = Excon::Errors::UnprocessableEntity.new("UnprocessableEntity")
|
193
|
+
stub_heroku_collaborator_error(error, 'email@example.com')
|
194
|
+
expect(STDOUT).to receive(:puts).with('Collaborator email@example.com was not added')
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'calls api.collaborator and not add user' do
|
198
|
+
subject.create
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context 'without collaborators' do
|
204
|
+
before do
|
205
|
+
expect(Codeland::Starter::Configuration).to receive(:[]).with('heroku').exactly(3).times.and_return({'oauth_token' => heroku_token})
|
206
|
+
end
|
207
|
+
|
208
|
+
it 'not calls api.collaborator' do
|
209
|
+
subject.create
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
133
213
|
end
|
134
214
|
end
|
135
215
|
|
data/template/codeland.rb
CHANGED
@@ -14,7 +14,7 @@ git :add => '.'
|
|
14
14
|
git :commit => %Q{ -m 'Initial commit' --quiet }
|
15
15
|
|
16
16
|
# Ruby and Rails check
|
17
|
-
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.
|
17
|
+
if Gem::Version.new(RUBY_VERSION) > Gem::Version.new('2.2')
|
18
18
|
if yes?("You are using #{RUBY_VERSION}. Is the version of the project?")
|
19
19
|
insert_into_file 'Gemfile', "ruby '#{RUBY_VERSION}'\n", :after => "source 'https://rubygems.org'\n\n"
|
20
20
|
end
|
@@ -24,19 +24,29 @@ else
|
|
24
24
|
puts 'Please upgrade to ruby 2.2 or more'
|
25
25
|
end
|
26
26
|
|
27
|
+
gem_group :development do
|
28
|
+
gem 'rack-mini-profiler'
|
29
|
+
gem 'letter_opener'
|
30
|
+
end
|
31
|
+
|
27
32
|
gem_group :development, :test do
|
28
33
|
unless rails_4?
|
29
|
-
gem 'pry-rails', '~> 0.3.
|
34
|
+
gem 'pry-rails', '~> 0.3.4'
|
30
35
|
end
|
31
|
-
gem '
|
32
|
-
gem 'rspec-rails', '~> 3.
|
36
|
+
gem 'factory_girl_rails', '~> 4.5.0'
|
37
|
+
gem 'rspec-rails', '~> 3.3.3'
|
33
38
|
gem 'awesome_print', '~> 1.6.1', :require => false
|
34
39
|
gem 'spring-commands-rspec', '~> 1.0.4'
|
35
40
|
gem 'thin', '~> 1.6.3'
|
41
|
+
gem 'dotenv-rails', '~> 2.0.2'
|
36
42
|
end
|
37
43
|
|
44
|
+
create_file '.env'
|
45
|
+
create_file '.env.example'
|
46
|
+
append_to_file '.gitignore', ".env\n"
|
47
|
+
|
38
48
|
gem_group :test do
|
39
|
-
gem 'simplecov', '~> 0.
|
49
|
+
gem 'simplecov', '~> 0.10.0', :require => false
|
40
50
|
gem 'database_cleaner', '~> 1.4.1'
|
41
51
|
gem 'shoulda-matchers', '~> 2.8.0', :require => false
|
42
52
|
gem 'capybara'
|
@@ -44,7 +54,6 @@ gem_group :test do
|
|
44
54
|
end
|
45
55
|
run 'bundle install --quiet'
|
46
56
|
run 'bundle exec spring binstub rspec'
|
47
|
-
generate :'machinist:install'
|
48
57
|
generate :'rspec:install'
|
49
58
|
inside 'spec' do
|
50
59
|
insert_into_file 'rails_helper.rb', "\nrequire 'shoulda-matchers'", :after => "require 'rspec/rails'"
|
@@ -85,7 +94,7 @@ config.generators do |g|
|
|
85
94
|
g.test_framework :rspec,
|
86
95
|
view_specs: false,
|
87
96
|
helper_specs: false
|
88
|
-
g.
|
97
|
+
g.factory_girl true
|
89
98
|
end
|
90
99
|
CONFIG
|
91
100
|
git :add => '.'
|
@@ -122,13 +131,14 @@ git :commit => %Q{ -m 'Install Rails-i18n' --quiet }
|
|
122
131
|
gem 'slim-rails', '~> 3.0.1'
|
123
132
|
run 'bundle install --quiet'
|
124
133
|
application %Q(config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }), :env => 'development'
|
134
|
+
application 'config.action_mailer.delivery_method = :letter_opener', :env => 'development'
|
125
135
|
application 'Slim::Engine.set_options pretty: true', :env => 'development'
|
126
136
|
git :add => '.'
|
127
137
|
git :commit => %Q{ -m 'Install Slim-rails' --quiet }
|
128
138
|
|
129
139
|
if yes?('Install Devise?')
|
130
|
-
gem 'devise', '~> 3.
|
131
|
-
gem 'devise-i18n'
|
140
|
+
gem 'devise', '~> 3.5.2'
|
141
|
+
gem 'devise-i18n', '~> 0.12.1'
|
132
142
|
run 'bundle install --quiet'
|
133
143
|
generate :'devise:install'
|
134
144
|
git :add => '.'
|
@@ -136,7 +146,7 @@ if yes?('Install Devise?')
|
|
136
146
|
end
|
137
147
|
|
138
148
|
if yes?('Install ActiveAdmin?')
|
139
|
-
gem 'activeadmin', :github => '
|
149
|
+
gem 'activeadmin', :github => 'activeadmin'
|
140
150
|
run 'bundle install --quiet'
|
141
151
|
generate :'active_admin:install'
|
142
152
|
git :add => '.'
|
@@ -153,7 +163,7 @@ if yes?('Install Simpleform?')
|
|
153
163
|
end
|
154
164
|
|
155
165
|
if yes?('Install Pundit?')
|
156
|
-
gem 'pundit', '~> 0.
|
166
|
+
gem 'pundit', '~> 1.0.1'
|
157
167
|
run 'bundle install --quiet'
|
158
168
|
generate :'pundit:install'
|
159
169
|
inside 'app' do
|
@@ -165,21 +175,25 @@ if yes?('Install Pundit?')
|
|
165
175
|
private
|
166
176
|
|
167
177
|
def user_not_authorized
|
168
|
-
flash[:
|
178
|
+
flash[:alert] = "Você não tem permissão para fazer isso."
|
169
179
|
redirect_to(request.referrer || root_path)
|
170
180
|
end
|
171
181
|
', :after => "protect_from_forgery with: :exception\n"
|
172
182
|
end
|
173
183
|
end
|
184
|
+
inside 'spec' do
|
185
|
+
insert_into_file 'rails_helper.rb', "\nrequire 'pundit/rspec'", :after => "require 'shoulda-matchers'"
|
186
|
+
end
|
174
187
|
git :add => '.'
|
175
188
|
git :commit => %Q{ -m 'Install Pundit' --quiet }
|
176
189
|
end
|
177
190
|
|
178
191
|
# Front-end stuffs
|
179
192
|
|
180
|
-
gem 'autoprefixer-rails'
|
181
|
-
gem 'bootstrap-sass', '~> 3.3.
|
182
|
-
gem 'font-awesome-rails'
|
193
|
+
gem 'autoprefixer-rails', '~> 5.2.1'
|
194
|
+
gem 'bootstrap-sass', '~> 3.3.5'
|
195
|
+
gem 'font-awesome-rails', '~> 4.4.0'
|
196
|
+
gem 'draper', '~> 1.3'
|
183
197
|
run 'bundle install --quiet'
|
184
198
|
|
185
199
|
inside 'app' do
|
@@ -194,13 +208,23 @@ inside 'app' do
|
|
194
208
|
end
|
195
209
|
end
|
196
210
|
|
211
|
+
empty_directory 'decorators' do
|
212
|
+
create_file '.keep'
|
213
|
+
end
|
214
|
+
|
197
215
|
inside 'views' do
|
198
216
|
directory 'partials'
|
199
217
|
end
|
200
218
|
end
|
201
219
|
|
220
|
+
inside 'spec' do
|
221
|
+
empty_directory 'decorators' do
|
222
|
+
create_file '.keep'
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
202
226
|
if yes?('Install NProgress?')
|
203
|
-
gem 'nprogress-rails'
|
227
|
+
gem 'nprogress-rails', '~> 0.1.6'
|
204
228
|
run 'bundle install --quiet'
|
205
229
|
inside 'app' do
|
206
230
|
inside 'assets' do
|
@@ -5,7 +5,7 @@
|
|
5
5
|
@import "base/variables";
|
6
6
|
@import "base/variables-colors";
|
7
7
|
@import "base/base";
|
8
|
-
@import "base/
|
8
|
+
@import "base/typography";
|
9
9
|
@import "base/utility";
|
10
10
|
|
11
11
|
// ==== Atoms
|
@@ -15,4 +15,4 @@
|
|
15
15
|
|
16
16
|
// ==== Organisms
|
17
17
|
@import "organisms/header";
|
18
|
-
@import "organisms/
|
18
|
+
@import "organisms/footer";
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: codeland-starter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sérgio Schnorr Júnior
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-09-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: platform-api
|
@@ -137,20 +137,6 @@ dependencies:
|
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: pry
|
142
|
-
requirement: !ruby/object:Gem::Requirement
|
143
|
-
requirements:
|
144
|
-
- - ">="
|
145
|
-
- !ruby/object:Gem::Version
|
146
|
-
version: '0'
|
147
|
-
type: :development
|
148
|
-
prerelease: false
|
149
|
-
version_requirements: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - ">="
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '0'
|
154
140
|
- !ruby/object:Gem::Dependency
|
155
141
|
name: codeclimate-test-reporter
|
156
142
|
requirement: !ruby/object:Gem::Requirement
|
@@ -177,6 +163,7 @@ files:
|
|
177
163
|
- ".gitignore"
|
178
164
|
- ".rspec"
|
179
165
|
- ".travis.yml"
|
166
|
+
- CHANGELOG.md
|
180
167
|
- Gemfile
|
181
168
|
- LICENSE.txt
|
182
169
|
- README.md
|
@@ -190,6 +177,7 @@ files:
|
|
190
177
|
- lib/codeland/starter/integrations/heroku.rb
|
191
178
|
- lib/codeland/starter/version.rb
|
192
179
|
- spec/fixtures/heroku_app.json
|
180
|
+
- spec/fixtures/heroku_collaborator.json
|
193
181
|
- spec/spec_helper.rb
|
194
182
|
- spec/starter/configuration_spec.rb
|
195
183
|
- spec/starter/integrations/heroku_spec.rb
|
@@ -232,12 +220,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
232
220
|
version: '0'
|
233
221
|
requirements: []
|
234
222
|
rubyforge_project:
|
235
|
-
rubygems_version: 2.4.5
|
223
|
+
rubygems_version: 2.4.5.1
|
236
224
|
signing_key:
|
237
225
|
specification_version: 4
|
238
226
|
summary: To create Rails projects with template and integrations
|
239
227
|
test_files:
|
240
228
|
- spec/fixtures/heroku_app.json
|
229
|
+
- spec/fixtures/heroku_collaborator.json
|
241
230
|
- spec/spec_helper.rb
|
242
231
|
- spec/starter/configuration_spec.rb
|
243
232
|
- spec/starter/integrations/heroku_spec.rb
|