chili 0.2.2 → 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.
- data/.travis.yml +5 -0
- data/README.md +6 -6
- data/Rakefile +2 -2
- data/lib/chili/version.rb +1 -1
- data/lib/generators/chili/USAGE +8 -0
- data/lib/generators/chili/chili_generator.rb +104 -0
- data/spec/dummy/template/app/assets/stylesheets/chili_template/application.css +1 -1
- data/spec/dummy/template/chili_template.gemspec +4 -5
- data/spec/generators/chili/chili_generator_spec.rb +27 -0
- metadata +60 -26
- data/bin/chili +0 -4
- data/lib/chili/tasks.rb +0 -7
- data/lib/chili/template.rb +0 -87
- data/spec/bin/chili_spec.rb +0 -24
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Chili
|
1
|
+
# Chili [](http://travis-ci.org/balvig/chili)
|
2
2
|
|
3
3
|
Have you ever wanted to test out a new feature on only a subset of users?
|
4
4
|
Did that implementation end up being lots of if/else statements embedded in the main code?
|
@@ -19,18 +19,18 @@ and run `bundle`.
|
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
22
|
-
Chili extensions are like mini apps that are created inside your main app's vendor directory using using the "chili"
|
22
|
+
Chili extensions are like mini apps that are created inside your main app's vendor directory using using the "chili" generator.
|
23
23
|
|
24
24
|
### Creating a new chili extension
|
25
25
|
|
26
26
|
As an example, assuming you want to add a new extension named "social" that exposes a new social feature in the form of a like-button
|
27
|
-
to a subset of users, first
|
27
|
+
to a subset of users, first within your main app run:
|
28
28
|
|
29
|
-
$ chili
|
29
|
+
$ rails g chili social
|
30
30
|
|
31
31
|
This is basically a shortcut for running the `rails plugin new` engine generator with a custom template and will:
|
32
32
|
|
33
|
-
1. Create a the directory vendor/chili_social containing the basic structure for the extension
|
33
|
+
1. Create a the directory `vendor/chili_social` containing the basic structure for the extension
|
34
34
|
2. Add a reference to the extension to the main app gemfile
|
35
35
|
|
36
36
|
Since the extension is mounted as a gem you'll have to run `bundle`
|
@@ -98,7 +98,7 @@ Access in your overrides/extension views through the namespaced model:
|
|
98
98
|
|
99
99
|
### Stylesheets/javascripts
|
100
100
|
|
101
|
-
Files added to `app/assets/chili_social/javascripts|stylesheets` are automatically injected into the layout using a pre-generated override:
|
101
|
+
Files added to the extension's `app/assets/chili_social/javascripts|stylesheets` directory are automatically injected into the layout using a pre-generated override:
|
102
102
|
|
103
103
|
```erb
|
104
104
|
<% # app/overrides/layouts/application/assets.html.erb.deface %>
|
data/Rakefile
CHANGED
@@ -6,8 +6,8 @@ rescue LoadError
|
|
6
6
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
7
7
|
end
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
APP_RAKEFILE = File.expand_path("../spec/dummy/example/Rakefile", __FILE__)
|
10
|
+
load 'rails/tasks/engine.rake'
|
11
11
|
|
12
12
|
require 'rspec/core/rake_task'
|
13
13
|
|
data/lib/chili/version.rb
CHANGED
@@ -0,0 +1,104 @@
|
|
1
|
+
class ChiliGenerator < Rails::Generators::NamedBase
|
2
|
+
NAME = "chili_#{ARGV[0]}"
|
3
|
+
PATH = "vendor/#{NAME}"
|
4
|
+
|
5
|
+
def run_plugin_generator
|
6
|
+
ARGV[0] = PATH
|
7
|
+
ARGV[1] = "--mountable"
|
8
|
+
ARGV[2] = '--skip-test-unit'
|
9
|
+
ARGV[3] = '--skip-bundle'
|
10
|
+
|
11
|
+
require 'rails/generators'
|
12
|
+
require 'rails/generators/rails/plugin_new/plugin_new_generator'
|
13
|
+
Rails::Generators::PluginNewGenerator.start
|
14
|
+
end
|
15
|
+
|
16
|
+
def reset_destination_root
|
17
|
+
self.destination_root = ''
|
18
|
+
end
|
19
|
+
|
20
|
+
def edit_gemspec
|
21
|
+
require File.expand_path('../../../chili/version', __FILE__)
|
22
|
+
gemspec = "#{NAME}.gemspec"
|
23
|
+
gsub_file gemspec, '# s.add_dependency "jquery-rails"', "s.add_dependency 'chili', '~> #{Chili::VERSION}'"
|
24
|
+
gsub_file gemspec, 'TODO: Your name', `git config user.NAME`.chomp
|
25
|
+
gsub_file gemspec, 'TODO: Your email', `git config user.email`.chomp
|
26
|
+
gsub_file gemspec, /TODO(:\s)?/, ''
|
27
|
+
end
|
28
|
+
|
29
|
+
def add_gem_to_main_gemfile
|
30
|
+
append_to_file "../../Gemfile", "gem '#{NAME}', path: '#{PATH}'"
|
31
|
+
end
|
32
|
+
|
33
|
+
def remove_unused_files
|
34
|
+
remove_dir "app/controllers/#{NAME}"
|
35
|
+
remove_dir "app/helpers/#{NAME}"
|
36
|
+
remove_dir 'app/views/layouts'
|
37
|
+
remove_file 'Gemfile'
|
38
|
+
remove_file 'Rakefile'
|
39
|
+
end
|
40
|
+
|
41
|
+
def remove_jquery_stuff
|
42
|
+
gsub_file "app/assets/javascripts/#{NAME}/application.js", "//= require jquery_ujs\n", ''
|
43
|
+
gsub_file "app/assets/javascripts/#{NAME}/application.js", "//= require jquery\n", ''
|
44
|
+
end
|
45
|
+
|
46
|
+
def set_up_custom_generator
|
47
|
+
inject_into_file "lib/#{NAME}/engine.rb", after: "isolate_namespace #{NAME.camelcase}\n" do <<-RUBY
|
48
|
+
config.generators do |g|
|
49
|
+
g.scaffold_controller :chili
|
50
|
+
end
|
51
|
+
RUBY
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def set_up_rspec
|
56
|
+
inject_into_file "lib/#{NAME}/engine.rb", :after => " g.scaffold_controller :chili\n" do <<-RUBY
|
57
|
+
g.test_framework :rspec, view_specs: false, routing_specs: false, controller_specs: false
|
58
|
+
g.integration_tool :rspec
|
59
|
+
RUBY
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def clean_up_gitignore
|
64
|
+
gsub_file ".gitignore", /test\/dummy.*\n/, ''
|
65
|
+
end
|
66
|
+
|
67
|
+
def automount_engine
|
68
|
+
prepend_to_file 'config/routes.rb', "#{NAME.camelcase}::Engine.automount!\n"
|
69
|
+
end
|
70
|
+
|
71
|
+
def include_chili_libs
|
72
|
+
prepend_to_file "lib/#{NAME}.rb", "require \"chili\"\n"
|
73
|
+
end
|
74
|
+
|
75
|
+
def include_active_if
|
76
|
+
inject_into_file "lib/#{NAME}.rb", :after => "module #{NAME.camelcase}\n" do <<-RUBY
|
77
|
+
extend Chili::Activatable
|
78
|
+
active_if { logged_in? }
|
79
|
+
RUBY
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def add_dummy_override
|
84
|
+
example_file_path = "app/overrides/layouts/application/example.html.erb.deface"
|
85
|
+
create_file example_file_path do <<-RUBY
|
86
|
+
<!-- insert_bottom 'body' -->
|
87
|
+
<div style='background: #FFF;text-align: center; padding: 4px 0;position: fixed;width: 100%;z-index: 9999;top: 0;'>
|
88
|
+
#{NAME} active - edit/remove this file:<br/>
|
89
|
+
<strong>#{PATH}/#{example_file_path}</strong><br/>
|
90
|
+
<%= link_to 'deface docs', 'https://github.com/railsdog/deface', target: '_blank' %>
|
91
|
+
</div>
|
92
|
+
RUBY
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def add_assets_override
|
97
|
+
create_file 'app/overrides/layouts/application/assets.html.erb.deface' do <<-RUBY
|
98
|
+
<!-- insert_bottom 'head' -->
|
99
|
+
<%= stylesheet_link_tag '#{NAME}/application' %>
|
100
|
+
<%= javascript_include_tag '#{NAME}/application' %>
|
101
|
+
RUBY
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -7,17 +7,16 @@ require "chili_template/version"
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "chili_template"
|
9
9
|
s.version = ChiliTemplate::VERSION
|
10
|
-
s.authors = ["
|
11
|
-
s.email = ["
|
10
|
+
s.authors = ["GIT_AUTHOR"]
|
11
|
+
s.email = ["GIT_EMAIL"]
|
12
12
|
s.homepage = ""
|
13
13
|
s.summary = "Summary of ChiliTemplate."
|
14
14
|
s.description = "Description of ChiliTemplate."
|
15
15
|
|
16
16
|
s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
|
17
|
-
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
18
17
|
|
19
|
-
s.add_dependency "rails", "~> 3.2.
|
20
|
-
s.add_dependency 'chili', '~> 0.
|
18
|
+
s.add_dependency "rails", "~> 3.2.5"
|
19
|
+
s.add_dependency 'chili', '~> 0.3.0'
|
21
20
|
|
22
21
|
s.add_development_dependency "sqlite3"
|
23
22
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'ChiliGenerator' do
|
4
|
+
describe 'rails g chili EXTENSION_NAME' do
|
5
|
+
let(:app_path) { File.expand_path("../../../dummy/example", __FILE__) }
|
6
|
+
let(:template_path) { File.expand_path("../../../dummy/template", __FILE__) }
|
7
|
+
|
8
|
+
before do
|
9
|
+
FileUtils.rm_rf File.join(app_path, 'vendor/chili_template')
|
10
|
+
FileUtils.rm_rf File.join(app_path, 'Gemfile')
|
11
|
+
FileUtils.touch File.join(app_path, 'Gemfile')
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'creates a new extension with a correct file structure' do
|
15
|
+
puts `cd #{app_path} && rails g chili template`
|
16
|
+
|
17
|
+
Dir.glob(File.join(template_path, "**/*")).reject { |f| File.directory?(f) }.each do |template|
|
18
|
+
result = File.join(app_path, 'vendor/chili_template', template.sub(template_path, ''))
|
19
|
+
result_text = File.open(result, 'rb').read
|
20
|
+
template_text = File.open(template, 'rb').read
|
21
|
+
template_text.sub!('GIT_AUTHOR',`git config user.name`.chomp) # Git author is be different on each machine
|
22
|
+
template_text.sub!('GIT_EMAIL',`git config user.email`.chomp) # Git email is be different on each machine
|
23
|
+
result_text.should == template_text
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chili
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05
|
12
|
+
date: 2012-06-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.2'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: deface
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 0.9.1
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.9.1
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rspec
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 2.9.0
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.9.0
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rspec-rails
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: 2.9.0
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.9.0
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: jquery-rails
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: capybara
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: sqlite3
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
@@ -87,34 +117,37 @@ dependencies:
|
|
87
117
|
version: '0'
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
91
126
|
description: The spicy extension framework
|
92
127
|
email:
|
93
128
|
- jens@balvig.com
|
94
|
-
executables:
|
95
|
-
- chili
|
129
|
+
executables: []
|
96
130
|
extensions: []
|
97
131
|
extra_rdoc_files: []
|
98
132
|
files:
|
99
133
|
- .gitignore
|
134
|
+
- .travis.yml
|
100
135
|
- Gemfile
|
101
136
|
- LICENSE
|
102
137
|
- README.md
|
103
138
|
- Rakefile
|
104
139
|
- app/controllers/chili/application_controller.rb
|
105
|
-
- bin/chili
|
106
140
|
- chili.gemspec
|
107
141
|
- lib/chili.rb
|
108
142
|
- lib/chili/activatable.rb
|
109
143
|
- lib/chili/engine.rb
|
110
144
|
- lib/chili/extensions/rails/engine.rb
|
111
145
|
- lib/chili/overrides.rb
|
112
|
-
- lib/chili/tasks.rb
|
113
|
-
- lib/chili/template.rb
|
114
146
|
- lib/chili/version.rb
|
147
|
+
- lib/generators/chili/USAGE
|
148
|
+
- lib/generators/chili/chili_generator.rb
|
115
149
|
- lib/generators/rails/chili_generator.rb
|
116
150
|
- lib/generators/rails/templates/controller.rb
|
117
|
-
- spec/bin/chili_spec.rb
|
118
151
|
- spec/dummy/example/README.rdoc
|
119
152
|
- spec/dummy/example/Rakefile
|
120
153
|
- spec/dummy/example/app/assets/javascripts/application.js
|
@@ -201,6 +234,7 @@ files:
|
|
201
234
|
- spec/dummy/template/lib/chili_template/version.rb
|
202
235
|
- spec/dummy/template/lib/tasks/chili_template_tasks.rake
|
203
236
|
- spec/dummy/template/script/rails
|
237
|
+
- spec/generators/chili/chili_generator_spec.rb
|
204
238
|
- spec/lib/chili/activatable_spec.rb
|
205
239
|
- spec/requests/chili_social_spec.rb
|
206
240
|
- spec/spec_helper.rb
|
@@ -218,7 +252,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
218
252
|
version: '0'
|
219
253
|
segments:
|
220
254
|
- 0
|
221
|
-
hash:
|
255
|
+
hash: -3078710322112426020
|
222
256
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
223
257
|
none: false
|
224
258
|
requirements:
|
@@ -227,15 +261,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
261
|
version: '0'
|
228
262
|
segments:
|
229
263
|
- 0
|
230
|
-
hash:
|
264
|
+
hash: -3078710322112426020
|
231
265
|
requirements: []
|
232
266
|
rubyforge_project:
|
233
|
-
rubygems_version: 1.8.
|
267
|
+
rubygems_version: 1.8.23
|
234
268
|
signing_key:
|
235
269
|
specification_version: 3
|
236
270
|
summary: The spicy extension framework
|
237
271
|
test_files:
|
238
|
-
- spec/bin/chili_spec.rb
|
239
272
|
- spec/dummy/example/README.rdoc
|
240
273
|
- spec/dummy/example/Rakefile
|
241
274
|
- spec/dummy/example/app/assets/javascripts/application.js
|
@@ -322,6 +355,7 @@ test_files:
|
|
322
355
|
- spec/dummy/template/lib/chili_template/version.rb
|
323
356
|
- spec/dummy/template/lib/tasks/chili_template_tasks.rake
|
324
357
|
- spec/dummy/template/script/rails
|
358
|
+
- spec/generators/chili/chili_generator_spec.rb
|
325
359
|
- spec/lib/chili/activatable_spec.rb
|
326
360
|
- spec/requests/chili_social_spec.rb
|
327
361
|
- spec/spec_helper.rb
|
data/bin/chili
DELETED
data/lib/chili/tasks.rb
DELETED
data/lib/chili/template.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
# Edit gemspec
|
2
|
-
require File.expand_path('../version', __FILE__)
|
3
|
-
gemspec = "#{name}.gemspec"
|
4
|
-
gsub_file gemspec, '# s.add_dependency "jquery-rails"', "s.add_dependency 'chili', '~> #{Chili::VERSION}'"
|
5
|
-
gsub_file gemspec, 'TODO: Your name', `git config user.name`.chomp
|
6
|
-
gsub_file gemspec, 'TODO: Your email', `git config user.email`.chomp
|
7
|
-
gsub_file gemspec, /TODO(:\s)?/, ''
|
8
|
-
gsub_file gemspec, 'Dir["test/**/*"]', 's.files.grep(%r{^(test|spec|features)/})'
|
9
|
-
|
10
|
-
# Add gem to main app Gemfile
|
11
|
-
append_to_file "../../Gemfile", "gem '#{name}', path: '#{app_path}'"
|
12
|
-
|
13
|
-
# Uses Chili::ApplicationController and the layout from the main app
|
14
|
-
remove_dir "app/controllers/#{name}"
|
15
|
-
remove_dir "app/helpers/#{name}"
|
16
|
-
remove_dir 'app/views/layouts'
|
17
|
-
|
18
|
-
# Uses Gemfile from main app
|
19
|
-
remove_file 'Gemfile'
|
20
|
-
|
21
|
-
# Replace Rakefile
|
22
|
-
remove_file 'Rakefile'
|
23
|
-
|
24
|
-
# Remove jquery stuff from application.js
|
25
|
-
gsub_file "app/assets/javascripts/#{name}/application.js", "//= require jquery_ujs\n", ''
|
26
|
-
gsub_file "app/assets/javascripts/#{name}/application.js", "//= require jquery\n", ''
|
27
|
-
|
28
|
-
# Setup custom generator
|
29
|
-
inject_into_file "lib/#{name}/engine.rb", after: "isolate_namespace #{name.camelcase}\n" do <<-RUBY
|
30
|
-
config.generators do |g|
|
31
|
-
g.scaffold_controller :chili
|
32
|
-
end
|
33
|
-
RUBY
|
34
|
-
end
|
35
|
-
|
36
|
-
# Remove dummy stuff
|
37
|
-
remove_dir 'test'
|
38
|
-
|
39
|
-
# Set up rspec
|
40
|
-
inject_into_file "lib/#{name}/engine.rb", :after => " g.scaffold_controller :chili\n" do <<-RUBY
|
41
|
-
g.test_framework :rspec, view_specs: false, routing_specs: false, controller_specs: false
|
42
|
-
g.integration_tool :rspec
|
43
|
-
RUBY
|
44
|
-
end
|
45
|
-
|
46
|
-
# Edit .gitignore
|
47
|
-
gsub_file ".gitignore", /test\/dummy.*\n/, ''
|
48
|
-
|
49
|
-
# Automount engine
|
50
|
-
prepend_to_file 'config/routes.rb', "#{name.camelcase}::Engine.automount!\n"
|
51
|
-
|
52
|
-
# Include chili libs
|
53
|
-
prepend_to_file "lib/#{name}.rb" do <<-RUBY
|
54
|
-
require "chili"
|
55
|
-
RUBY
|
56
|
-
end
|
57
|
-
|
58
|
-
|
59
|
-
# Include active_if
|
60
|
-
inject_into_file "lib/#{name}.rb", :after => "module #{name.camelcase}\n" do <<-RUBY
|
61
|
-
extend Chili::Activatable
|
62
|
-
active_if { logged_in? }
|
63
|
-
RUBY
|
64
|
-
end
|
65
|
-
|
66
|
-
# Add dummy override
|
67
|
-
example_file_path = "app/overrides/layouts/application/example.html.erb.deface"
|
68
|
-
create_file example_file_path do <<-RUBY
|
69
|
-
<!-- insert_bottom 'body' -->
|
70
|
-
<div style='background: #FFF;text-align: center; padding: 4px 0;position: fixed;width: 100%;z-index: 9999;top: 0;'>
|
71
|
-
#{name} active - edit/remove this file:<br/>
|
72
|
-
<strong>#{app_path}/#{example_file_path}</strong><br/>
|
73
|
-
<%= link_to 'deface docs', 'https://github.com/railsdog/deface', target: '_blank' %>
|
74
|
-
</div>
|
75
|
-
RUBY
|
76
|
-
end
|
77
|
-
|
78
|
-
# Add assets override
|
79
|
-
create_file 'app/overrides/layouts/application/assets.html.erb.deface' do <<-RUBY
|
80
|
-
<!-- insert_bottom 'head' -->
|
81
|
-
<%= stylesheet_link_tag '#{name}/application' %>
|
82
|
-
<%= javascript_include_tag '#{name}/application' %>
|
83
|
-
RUBY
|
84
|
-
end
|
85
|
-
|
86
|
-
# Disable bundler
|
87
|
-
def run_bundle ; end
|
data/spec/bin/chili_spec.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe 'Chili Binary' do
|
4
|
-
describe 'chili EXTENSION_NAME' do
|
5
|
-
let(:chili) { File.expand_path("../../../bin/chili", __FILE__) }
|
6
|
-
let(:app_path) { File.expand_path("../../dummy/example", __FILE__) }
|
7
|
-
let(:template_path) { File.expand_path("../../dummy/template", __FILE__) }
|
8
|
-
|
9
|
-
before do
|
10
|
-
FileUtils.rm_rf File.join(app_path, 'vendor/chili_template')
|
11
|
-
FileUtils.rm_rf File.join(app_path, 'Gemfile')
|
12
|
-
FileUtils.touch File.join(app_path, 'Gemfile')
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'creates a new extension with a correct file structure' do
|
16
|
-
`cd #{app_path} && #{chili} new template`
|
17
|
-
|
18
|
-
Dir.glob(File.join(template_path, "**/*")).reject { |f| File.directory?(f) }.each do |source|
|
19
|
-
result = File.join(app_path, 'vendor/chili_template', source.sub(template_path, ''))
|
20
|
-
File.open(result, 'rb').read.should == File.open(source, 'rb').read
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|