rang 0.1.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.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/.rspec +3 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +195 -0
- data/Rakefile +1 -0
- data/TODO.md +43 -0
- data/app/controllers/rang/application_controller.rb +4 -0
- data/app/controllers/rang/root_controller.rb +7 -0
- data/config/routes.rb +3 -0
- data/lib/rails/generators/rang/add_root/add_root_generator.rb +12 -0
- data/lib/rails/generators/rang/api/configure/configure_generator.rb +70 -0
- data/lib/rails/generators/rang/api/configure/templates/active_model_serializer.rb +5 -0
- data/lib/rails/generators/rang/assets/init/init_generator.rb +52 -0
- data/lib/rails/generators/rang/assets/init/templates/_base.scss +11 -0
- data/lib/rails/generators/rang/assets/init/templates/application.js +14 -0
- data/lib/rails/generators/rang/assets/init/templates/application.scss +3 -0
- data/lib/rails/generators/rang/assets/init/templates/components.js +2 -0
- data/lib/rails/generators/rang/bower/add/add_generator.rb +48 -0
- data/lib/rails/generators/rang/bower/bower_generator.rb +28 -0
- data/lib/rails/generators/rang/bower/init/init_generator.rb +35 -0
- data/lib/rails/generators/rang/example/example_generator.rb +17 -0
- data/lib/rails/generators/rang/example/templates/frontend/application.js.tt +21 -0
- data/lib/rails/generators/rang/example/templates/frontend/application.scss +6 -0
- data/lib/rails/generators/rang/example/templates/frontend/components/components.js +2 -0
- data/lib/rails/generators/rang/example/templates/frontend/components/simple_format/simple_format.directive.js +12 -0
- data/lib/rails/generators/rang/example/templates/frontend/components/simple_format/simple_format.module.js +4 -0
- data/lib/rails/generators/rang/example/templates/frontend/posts/index.ctrl.js.tt +6 -0
- data/lib/rails/generators/rang/example/templates/frontend/posts/index.ctrl.spec.js.tt +12 -0
- data/lib/rails/generators/rang/example/templates/frontend/posts/index.slim.tt +14 -0
- data/lib/rails/generators/rang/example/templates/frontend/posts/posts.module.js.tt +12 -0
- data/lib/rails/generators/rang/example/templates/frontend/posts/posts.scss +3 -0
- data/lib/rails/generators/rang/example/templates/frontend/posts/posts.service.js.tt +44 -0
- data/lib/rails/generators/rang/example/templates/frontend/style/_base.scss +11 -0
- data/lib/rails/generators/rang/example/templates/frontend/style/_layout.scss +3 -0
- data/lib/rails/generators/rang/install/install_generator.rb +66 -0
- data/lib/rails/generators/rang/install/templates/rang.rb +25 -0
- data/lib/rails/generators/rang/teaspoon/install/install_generator.rb +75 -0
- data/lib/rang.rb +18 -0
- data/lib/rang/config.rb +12 -0
- data/lib/rang/engine/railtie.rb +5 -0
- data/lib/rang/helpers.rb +35 -0
- data/lib/rang/patcher.rb +50 -0
- data/lib/rang/util.rb +11 -0
- data/lib/rang/version.rb +3 -0
- data/rang.gemspec +29 -0
- data/spec/controllers/root_controller_spec.rb +12 -0
- data/spec/generators/add_root_spec.rb +21 -0
- data/spec/generators/api_configure_spec.rb +44 -0
- data/spec/generators/assets_init_spec.rb +91 -0
- data/spec/generators/bower_add_spec.rb +61 -0
- data/spec/generators/bower_init_spec.rb +57 -0
- data/spec/generators/install_spec.rb +40 -0
- data/spec/generators/teaspoon_install_spec.rb +123 -0
- data/spec/helpers_spec.rb +64 -0
- data/spec/patcher_spec.rb +103 -0
- data/spec/rails_app/.gitignore +16 -0
- data/spec/rails_app/Gemfile +41 -0
- data/spec/rails_app/README.rdoc +28 -0
- data/spec/rails_app/Rakefile +6 -0
- data/spec/rails_app/app/assets/images/.keep +0 -0
- data/spec/rails_app/app/assets/javascripts/application.js +16 -0
- data/spec/rails_app/app/assets/stylesheets/application.css +15 -0
- data/spec/rails_app/app/controllers/application_controller.rb +5 -0
- data/spec/rails_app/app/controllers/concerns/.keep +0 -0
- data/spec/rails_app/app/helpers/application_helper.rb +2 -0
- data/spec/rails_app/app/mailers/.keep +0 -0
- data/spec/rails_app/app/models/.keep +0 -0
- data/spec/rails_app/app/models/concerns/.keep +0 -0
- data/spec/rails_app/app/views/layouts/application.html.erb +14 -0
- data/spec/rails_app/bin/bundle +3 -0
- data/spec/rails_app/bin/rails +8 -0
- data/spec/rails_app/bin/rake +8 -0
- data/spec/rails_app/bin/spring +18 -0
- data/spec/rails_app/config.ru +4 -0
- data/spec/rails_app/config/application.rb +23 -0
- data/spec/rails_app/config/boot.rb +4 -0
- data/spec/rails_app/config/database.yml +25 -0
- data/spec/rails_app/config/environment.rb +5 -0
- data/spec/rails_app/config/environments/development.rb +37 -0
- data/spec/rails_app/config/environments/production.rb +82 -0
- data/spec/rails_app/config/environments/test.rb +39 -0
- data/spec/rails_app/config/initializers/assets.rb +8 -0
- data/spec/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/rails_app/config/initializers/cookies_serializer.rb +3 -0
- data/spec/rails_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/rails_app/config/initializers/inflections.rb +16 -0
- data/spec/rails_app/config/initializers/mime_types.rb +4 -0
- data/spec/rails_app/config/initializers/session_store.rb +3 -0
- data/spec/rails_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/rails_app/config/locales/en.yml +23 -0
- data/spec/rails_app/config/routes.rb +56 -0
- data/spec/rails_app/config/secrets.yml +22 -0
- data/spec/rails_app/db/seeds.rb +7 -0
- data/spec/rails_app/lib/assets/.keep +0 -0
- data/spec/rails_app/lib/tasks/.keep +0 -0
- data/spec/rails_app/log/.keep +0 -0
- data/spec/rails_app/public/404.html +67 -0
- data/spec/rails_app/public/422.html +67 -0
- data/spec/rails_app/public/500.html +66 -0
- data/spec/rails_app/public/favicon.ico +0 -0
- data/spec/rails_app/public/robots.txt +5 -0
- data/spec/rails_app/test/controllers/.keep +0 -0
- data/spec/rails_app/test/fixtures/.keep +0 -0
- data/spec/rails_app/test/helpers/.keep +0 -0
- data/spec/rails_app/test/integration/.keep +0 -0
- data/spec/rails_app/test/mailers/.keep +0 -0
- data/spec/rails_app/test/models/.keep +0 -0
- data/spec/rails_app/test/test_helper.rb +10 -0
- data/spec/rails_app/vendor/assets/javascripts/.keep +0 -0
- data/spec/rails_app/vendor/assets/stylesheets/.keep +0 -0
- data/spec/spec_helper.rb +79 -0
- data/spec/util_spec.rb +27 -0
- data/spec/version_spec.rb +9 -0
- data/vendor/assets/javascripts/angular-templates.js.erb +14 -0
- metadata +327 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'rails/generators'
|
|
3
|
+
require_relative '../../lib/rails/generators/rang/install/install_generator.rb'
|
|
4
|
+
|
|
5
|
+
describe Rang::Generators::InstallGenerator do
|
|
6
|
+
|
|
7
|
+
let(:klass) { Rang::Generators::InstallGenerator }
|
|
8
|
+
let(:generator) { klass.new }
|
|
9
|
+
|
|
10
|
+
it "has a description" do
|
|
11
|
+
expect(klass.desc.empty?).to be_falsey
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#install_generator" do
|
|
15
|
+
let(:expected_config) do
|
|
16
|
+
{
|
|
17
|
+
patch_sprockets_to_use_html_extension: true,
|
|
18
|
+
disable_html_precompilation: true,
|
|
19
|
+
frontend_assets_directory: "frontend"
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "installs the generator" do
|
|
24
|
+
expect(generator).to receive(:template).with("rang.rb", "config/initializers/rang.rb")
|
|
25
|
+
generator.install_initializer
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "installs a generator with appropriate config" do
|
|
29
|
+
expect(generator).to receive(:template) do |file, path|
|
|
30
|
+
eval(IO.read(File.join(klass.source_root, file)))
|
|
31
|
+
expected_config.each do |key, value|
|
|
32
|
+
expect(Rang::Config.send(key)).to eq value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
generator.install_initializer
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
require "rails/generators"
|
|
3
|
+
require_relative "../../lib/rails/generators/rang/teaspoon/install/install_generator.rb"
|
|
4
|
+
|
|
5
|
+
describe Rang::Teaspoon::Generators::InstallGenerator do
|
|
6
|
+
|
|
7
|
+
let(:klass) { Rang::Teaspoon::Generators::InstallGenerator }
|
|
8
|
+
let(:generator) { klass.new }
|
|
9
|
+
|
|
10
|
+
it "has a description" do
|
|
11
|
+
expect(klass.desc.empty?).to be_falsey
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe "#add_teaspoon_to_gemfile" do
|
|
15
|
+
it "Adds gems to gemfile" do
|
|
16
|
+
expect(generator).to receive(:gem_group).with(:development, :test).and_yield
|
|
17
|
+
expect(generator).to receive(:gem).with("teaspoon", an_instance_of(String))
|
|
18
|
+
expect(generator).to receive(:gem).with("phantomjs", an_instance_of(String))
|
|
19
|
+
generator.add_teaspoon_to_gemfile
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#add_angular_mocks_to_gemfile" do
|
|
24
|
+
it "Runs bower:add generator with angular-mocks" do
|
|
25
|
+
expect(generator).to receive(:generate)
|
|
26
|
+
.with("rang:bower:add", "angular-mocks '~> 1.2.0' quiet")
|
|
27
|
+
generator.add_angular_mocks_to_gemfile
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe "#teaspoon_install" do
|
|
32
|
+
it "runs teaspoon:install" do
|
|
33
|
+
expect(generator).to receive(:generate).with("teaspoon:install")
|
|
34
|
+
generator.teaspoon_install
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "#add_teaspoon_assets_hack" do
|
|
39
|
+
it "injects fix into teaspoon_env" do
|
|
40
|
+
expect(generator).to receive(:inject_into_file)
|
|
41
|
+
.with("spec/teaspoon_env.rb", {before: "Teaspoon.configure do |config|"}) do |a, b, &block|
|
|
42
|
+
expect(block.call).to be_a String
|
|
43
|
+
end
|
|
44
|
+
generator.add_teaspoon_assets_hack
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe "#add_matcher" do
|
|
49
|
+
it "adds test matcher to teaspoon_env" do
|
|
50
|
+
expect(generator).to receive(:inject_into_file) do |filename, regex, &block|
|
|
51
|
+
expect(filename).to eq "spec/teaspoon_env.rb"
|
|
52
|
+
expect(block.call).to be_a String
|
|
53
|
+
end
|
|
54
|
+
generator.add_matcher
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "uses a line regex that matches the right line" do
|
|
58
|
+
expect(generator).to receive(:inject_into_file) do |filename, regex, &block|
|
|
59
|
+
regex = regex[:after]
|
|
60
|
+
expect("#suite.matcher = \"{spec/javascripts,app/assets}/**/*[_.]spec.{js,js.coffee,coffee}\"" =~ regex).to be_truthy
|
|
61
|
+
end
|
|
62
|
+
generator.add_matcher
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "uses a line regex that doesn't match the similar line later on" do
|
|
66
|
+
expect(generator).to receive(:inject_into_file) do |filename, regex, &block|
|
|
67
|
+
regex = regex[:after]
|
|
68
|
+
expect(" #config.suite :targeted do |suite|\n# suite.matcher = \"test/javascripts/targeted/*_test.{js,js.coffee,coffee}\"\n #end" =~ regex ).to be_falsey
|
|
69
|
+
end
|
|
70
|
+
generator.add_matcher
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe "#require_angular_mocks" do
|
|
75
|
+
it "adds angular-mocks require to test_helper" do
|
|
76
|
+
expect(generator).to receive(:inject_into_file) do |filename, regex, &block|
|
|
77
|
+
expect(filename).to eq "spec/javascripts/spec_helper.js"
|
|
78
|
+
expect(block.call).to eq "//= require angular\n//= require angular-mocks\n"
|
|
79
|
+
end
|
|
80
|
+
generator.require_angular_mocks
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "uses a line regex that matches the right line" do
|
|
84
|
+
expect(generator).to receive(:inject_into_file) do |filename, regex, &block|
|
|
85
|
+
regex = regex[:before]
|
|
86
|
+
expect("//= require application" =~ regex).to be_truthy
|
|
87
|
+
end
|
|
88
|
+
generator.require_angular_mocks
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
describe "#inform_of_actions" do
|
|
93
|
+
it "informs the user of some things" do
|
|
94
|
+
expect(generator).to receive(:say).at_least(1).times
|
|
95
|
+
generator.inform_of_actions
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
describe "#inform_about_better_errors" do
|
|
100
|
+
context "when better_errors is in the Gemfile" do
|
|
101
|
+
before do
|
|
102
|
+
allow(Gem::Specification).to receive(:find_all_by_name).with('better_errors').and_return([true])
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "warns the user" do
|
|
106
|
+
expect(generator).to receive(:say).at_least(1).times
|
|
107
|
+
generator.inform_about_better_errors
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
context "when better_errors is not in the Gemfile" do
|
|
112
|
+
before do
|
|
113
|
+
allow(Gem::Specification).to receive(:find_all_by_name).with('better_errors').and_return([])
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "does not speak" do
|
|
117
|
+
expect(generator).to_not receive(:say)
|
|
118
|
+
generator.inform_about_better_errors
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
class ContextFake
|
|
4
|
+
def return_self(*arguments)
|
|
5
|
+
self
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def escape_javascript(string)
|
|
9
|
+
string
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
alias_method :assets, :return_self
|
|
13
|
+
alias_method :logical_paths, :return_self
|
|
14
|
+
alias_method :assets, :return_self
|
|
15
|
+
alias_method :environment, :return_self
|
|
16
|
+
alias_method :find_asset, :return_self
|
|
17
|
+
alias_method :depend_on_asset, :return_self
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe Rang::Helpers do
|
|
21
|
+
|
|
22
|
+
describe '#templates' do
|
|
23
|
+
let(:context) { ContextFake.new }
|
|
24
|
+
|
|
25
|
+
it 'calls given block for each template path' do
|
|
26
|
+
allow(context).to receive(:logical_paths).and_return(['one.html','two.html','three.html', 'invalid.jpg'])
|
|
27
|
+
expect do |b|
|
|
28
|
+
Rang::Helpers.templates(context, &b)
|
|
29
|
+
end.to yield_control.exactly(3).times
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'calls given block with valid slimmed path' do
|
|
33
|
+
allow(context).to receive(:logical_paths).and_return(['one.html'])
|
|
34
|
+
expect do |b|
|
|
35
|
+
Rang::Helpers.templates(context, &b)
|
|
36
|
+
end.to yield_with_args('one.html', anything)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'calls given block with template string' do
|
|
40
|
+
template_string = '<p>html</p>'
|
|
41
|
+
allow(context).to receive(:logical_paths).and_return(['one.html'])
|
|
42
|
+
allow(context).to receive(:find_asset).and_return(template_string)
|
|
43
|
+
expect do |b|
|
|
44
|
+
Rang::Helpers.templates(context, &b)
|
|
45
|
+
end.to yield_with_args(anything, Rang::Helpers.escape_javascript(template_string))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'calls given block with escaped template string' do
|
|
49
|
+
template_string = '<p>html</p>'
|
|
50
|
+
allow(context).to receive(:logical_paths).and_return(['one.html'])
|
|
51
|
+
allow(Rang::Helpers).to receive(:escape_javascript).and_return(template_string)
|
|
52
|
+
expect do |b|
|
|
53
|
+
Rang::Helpers.templates(context, &b)
|
|
54
|
+
end.to yield_with_args(anything, template_string)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'calls depend_on_asset for each template' do
|
|
58
|
+
template_path = 'one.html'
|
|
59
|
+
allow(context).to receive(:logical_paths).and_return([template_path, 'invalid.jpg'])
|
|
60
|
+
expect(context).to receive(:depend_on_asset).with(template_path)
|
|
61
|
+
Rang::Helpers.templates(context) {}
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Rang::Patcher do
|
|
4
|
+
|
|
5
|
+
def enable_config(prop, value=true)
|
|
6
|
+
allow(Rang::Config).to receive(prop).and_return(value)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "#patch_sprockets_to_use_html_extension!" do
|
|
10
|
+
let(:trail) { double() }
|
|
11
|
+
|
|
12
|
+
before do
|
|
13
|
+
enable_config(:patch_sprockets_to_use_html_extension)
|
|
14
|
+
allow(trail).to receive(:alias_extension)
|
|
15
|
+
allow(Rails.application.assets).to receive(:send).and_return(trail)
|
|
16
|
+
allow(Rails.application.assets).to receive(:instance_eval)
|
|
17
|
+
allow(Rails.application.assets).to receive(:register_mime_type)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "patches sprockets trail with slim->html alias" do
|
|
21
|
+
expect(Rails.application.assets).to receive(:send).with(:trail).and_return(trail)
|
|
22
|
+
expect(trail).to receive(:alias_extension).with(".slim", ".html")
|
|
23
|
+
Rang::Patcher.patch!
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "patches assets to change #extension_for_mime_type behaviour" do
|
|
27
|
+
expect(Rails.application.assets).to receive(:instance_eval).and_call_original
|
|
28
|
+
allow(Rails.application.assets).to receive(:register_mime_type).and_call_original
|
|
29
|
+
Rang::Patcher.patch!
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "registers the text/html mime type to .html" do
|
|
33
|
+
allow(Rails.application.assets).to receive(:instance_eval).and_call_original
|
|
34
|
+
allow(Rails.application.assets).to receive(:register_mime_type).and_call_original
|
|
35
|
+
Rang::Patcher.patch!
|
|
36
|
+
expect(Rails.application.assets.extension_for_mime_type("text/html")).to eq ".html"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "#disable_html_precompilation!" do
|
|
41
|
+
before do
|
|
42
|
+
enable_config(:disable_html_precompilation)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "Changes assets.precompile to ignore html files" do
|
|
46
|
+
expect(Rails.application.config.assets).to receive(:precompile=) do |proc, regex|
|
|
47
|
+
expect(proc.call("asset.html", "app/assets")).to be_falsey
|
|
48
|
+
end
|
|
49
|
+
Rang::Patcher.patch!
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "#add_frontend_assets_directory!" do
|
|
54
|
+
before do
|
|
55
|
+
enable_config(:frontend_assets_directory, "frontend")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "adds /frontend to assets directories" do
|
|
59
|
+
Rang::Patcher.patch!
|
|
60
|
+
expect(Rails.application.config.assets.paths).to include "#{Rails.root}/app/assets/frontend"
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe "#register_slim_as_assets_engine!" do
|
|
65
|
+
context "when slim gem is present" do
|
|
66
|
+
before do
|
|
67
|
+
allow(Rang::Util).to receive(:gem_present?).and_return(true)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "registers slim as an assets engine" do
|
|
71
|
+
expect(Rails.application.assets).to receive(:register_engine)
|
|
72
|
+
.with(".slim", ::Slim::Template)
|
|
73
|
+
Rang::Patcher.patch!
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
context "when slim gem is not present" do
|
|
78
|
+
before do
|
|
79
|
+
allow(Rang::Util).to receive(:gem_present?).and_return(false)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "does not register slim as an assets engine" do
|
|
83
|
+
expect(Rails.application.assets).to_not receive(:register_engine)
|
|
84
|
+
.with(".slim", ::Slim::Template)
|
|
85
|
+
Rang::Patcher.patch!
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
describe "#remove_angular_delims_from_slim!" do
|
|
91
|
+
|
|
92
|
+
before do
|
|
93
|
+
allow(Rang::Util).to receive(:gem_present?).and_return(true)
|
|
94
|
+
enable_config(:remove_angular_delims_from_slim, "frontend")
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "should change attr_delims in slim default_config" do
|
|
98
|
+
expect(Slim::Engine).to receive(:set_default_options).with({attr_delims: {'(' => ')', '[' => ']'}})
|
|
99
|
+
Rang::Patcher.patch!
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
|
2
|
+
#
|
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
|
5
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
|
6
|
+
|
|
7
|
+
# Ignore bundler config.
|
|
8
|
+
/.bundle
|
|
9
|
+
|
|
10
|
+
# Ignore the default SQLite database.
|
|
11
|
+
/db/*.sqlite3
|
|
12
|
+
/db/*.sqlite3-journal
|
|
13
|
+
|
|
14
|
+
# Ignore all logfiles and tempfiles.
|
|
15
|
+
/log/*.log
|
|
16
|
+
/tmp
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
|
5
|
+
gem 'rails', '4.1.4'
|
|
6
|
+
# Use sqlite3 as the database for Active Record
|
|
7
|
+
gem 'sqlite3'
|
|
8
|
+
# Use SCSS for stylesheets
|
|
9
|
+
gem 'sass-rails', '~> 4.0.3'
|
|
10
|
+
# Use Uglifier as compressor for JavaScript assets
|
|
11
|
+
gem 'uglifier', '>= 1.3.0'
|
|
12
|
+
# Use CoffeeScript for .js.coffee assets and views
|
|
13
|
+
gem 'coffee-rails', '~> 4.0.0'
|
|
14
|
+
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
|
15
|
+
# gem 'therubyracer', platforms: :ruby
|
|
16
|
+
|
|
17
|
+
# Use jquery as the JavaScript library
|
|
18
|
+
gem 'jquery-rails'
|
|
19
|
+
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
|
|
20
|
+
gem 'turbolinks'
|
|
21
|
+
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
|
22
|
+
gem 'jbuilder', '~> 2.0'
|
|
23
|
+
# bundle exec rake doc:rails generates the API under doc/api.
|
|
24
|
+
gem 'sdoc', '~> 0.4.0', group: :doc
|
|
25
|
+
|
|
26
|
+
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
|
27
|
+
gem 'spring', group: :development
|
|
28
|
+
|
|
29
|
+
# Use ActiveModel has_secure_password
|
|
30
|
+
# gem 'bcrypt', '~> 3.1.7'
|
|
31
|
+
|
|
32
|
+
# Use unicorn as the app server
|
|
33
|
+
# gem 'unicorn'
|
|
34
|
+
|
|
35
|
+
# Use Capistrano for deployment
|
|
36
|
+
# gem 'capistrano-rails', group: :development
|
|
37
|
+
|
|
38
|
+
# Use debugger
|
|
39
|
+
# gem 'debugger', group: [:development, :test]
|
|
40
|
+
|
|
41
|
+
gem 'rang', path: '../../'
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
== README
|
|
2
|
+
|
|
3
|
+
This README would normally document whatever steps are necessary to get the
|
|
4
|
+
application up and running.
|
|
5
|
+
|
|
6
|
+
Things you may want to cover:
|
|
7
|
+
|
|
8
|
+
* Ruby version
|
|
9
|
+
|
|
10
|
+
* System dependencies
|
|
11
|
+
|
|
12
|
+
* Configuration
|
|
13
|
+
|
|
14
|
+
* Database creation
|
|
15
|
+
|
|
16
|
+
* Database initialization
|
|
17
|
+
|
|
18
|
+
* How to run the test suite
|
|
19
|
+
|
|
20
|
+
* Services (job queues, cache servers, search engines, etc.)
|
|
21
|
+
|
|
22
|
+
* Deployment instructions
|
|
23
|
+
|
|
24
|
+
* ...
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Please feel free to use a different markup language if you do not plan to run
|
|
28
|
+
<tt>rake doc:app</tt>.
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
|
2
|
+
// listed below.
|
|
3
|
+
//
|
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
|
6
|
+
//
|
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
|
8
|
+
// compiled file.
|
|
9
|
+
//
|
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
|
11
|
+
// about supported directives.
|
|
12
|
+
//
|
|
13
|
+
//= require jquery
|
|
14
|
+
//= require jquery_ujs
|
|
15
|
+
//= require turbolinks
|
|
16
|
+
//= require_tree .
|