js-routes 0.7.1 → 0.7.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/app/assets/javascripts/js-routes.js.erb +1 -1
- data/js-routes.gemspec +2 -2
- data/lib/js_routes.rb +10 -0
- data/lib/routes.js +10 -3
- data/spec/js_routes_spec.rb +4 -0
- data/spec/post_rails_init_spec.rb +52 -16
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.2
|
@@ -1 +1 @@
|
|
1
|
-
<%= JsRoutes.generate %>
|
1
|
+
<%= JsRoutes.assert_usable_configuration! && JsRoutes.generate %>
|
data/js-routes.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{js-routes}
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Bogdan Gusiev"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-11-05}
|
13
13
|
s.description = %q{Generates javascript file that defines all Rails named routes as javascript helpers}
|
14
14
|
s.email = %q{agresso@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/js_routes.rb
CHANGED
@@ -47,6 +47,16 @@ class JsRoutes
|
|
47
47
|
def generate!(opts = {})
|
48
48
|
new(opts).generate!
|
49
49
|
end
|
50
|
+
|
51
|
+
# Under rails 3.1.1 and higher, perform a check to ensure that the
|
52
|
+
# full environment will be available during asset compilation.
|
53
|
+
# This is required to ensure routes are loaded.
|
54
|
+
def assert_usable_configuration!
|
55
|
+
if Rails.version > "3.1.0" && !Rails.application.config.assets.initialize_on_precompile
|
56
|
+
raise("Cannot precompile js-routes unless environment is initialized. Please set config.assets.initialize_on_precompile to true.")
|
57
|
+
end
|
58
|
+
true
|
59
|
+
end
|
50
60
|
end
|
51
61
|
|
52
62
|
#
|
data/lib/routes.js
CHANGED
@@ -40,6 +40,12 @@
|
|
40
40
|
return format ? "." + format : "";
|
41
41
|
},
|
42
42
|
|
43
|
+
extract_anchor: function(options) {
|
44
|
+
var anchor = options.hasOwnProperty("anchor") ? options.anchor : null;
|
45
|
+
delete options.anchor;
|
46
|
+
return anchor ? "#" + anchor : "";
|
47
|
+
},
|
48
|
+
|
43
49
|
extract_options: function(number_of_params, args) {
|
44
50
|
if (args.length > number_of_params) {
|
45
51
|
return typeof(args[args.length-1]) == "object" ? args.pop() : {};
|
@@ -64,7 +70,7 @@
|
|
64
70
|
var result = Utils.get_prefix();
|
65
71
|
var opts = Utils.extract_options(number_of_params, args);
|
66
72
|
if (args.length > number_of_params) {
|
67
|
-
throw new Error("Too many parameters provided for path")
|
73
|
+
throw new Error("Too many parameters provided for path");
|
68
74
|
}
|
69
75
|
var params_count = 0, optional_params_count = 0;
|
70
76
|
for (var i=0; i < parts.length; i++) {
|
@@ -86,13 +92,14 @@
|
|
86
92
|
if (Utils.specified(value)) {
|
87
93
|
result += Utils.path_identifier(value);
|
88
94
|
} else {
|
89
|
-
throw new Error("Insufficient parameters to build path")
|
95
|
+
throw new Error("Insufficient parameters to build path");
|
90
96
|
}
|
91
97
|
}
|
92
98
|
}
|
93
99
|
}
|
94
100
|
var format = Utils.extract_format(opts);
|
95
|
-
|
101
|
+
var anchor = Utils.extract_anchor(opts);
|
102
|
+
return Utils.clean_path(result + format + anchor) + Utils.serialize(opts);
|
96
103
|
},
|
97
104
|
|
98
105
|
specified: function(value) {
|
data/spec/js_routes_spec.rb
CHANGED
@@ -47,6 +47,10 @@ describe JsRoutes do
|
|
47
47
|
it "should support routes with reserved javascript words as parameters" do
|
48
48
|
evaljs("Routes.object_path(1, 2)").should == routes.object_path(1,2)
|
49
49
|
end
|
50
|
+
|
51
|
+
it "should support url anchor given as parameter" do
|
52
|
+
evaljs("Routes.inbox_path(1, {anchor: 'hello'})").should == routes.inbox_path(1, :anchor => "hello")
|
53
|
+
end
|
50
54
|
end
|
51
55
|
|
52
56
|
context "when wrong parameters given" do
|
@@ -15,10 +15,10 @@ describe "after Rails initialization" do
|
|
15
15
|
after(:all) do
|
16
16
|
FileUtils.rm_f(name)
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
context '.generate!' do
|
20
20
|
it "should generate routes file" do
|
21
|
-
File.exists?(name).should be_true
|
21
|
+
File.exists?(name).should be_true
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -45,26 +45,62 @@ describe "after Rails initialization" do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
context "the preprocessor" do
|
48
|
+
before(:each) do
|
49
|
+
ctx.should_receive(:depend_on).with(Rails.root.join('config','routes.rb'))
|
50
|
+
end
|
51
|
+
let!(:ctx) do
|
52
|
+
Sprockets::Context.new(Rails.application.assets,
|
53
|
+
'js-routes.js',
|
54
|
+
Pathname.new('js-routes.js'))
|
55
|
+
|
56
|
+
end
|
48
57
|
context "when dealing with js-routes.js" do
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
58
|
+
|
59
|
+
#TODO: check why doesn't work with let callbacks
|
60
|
+
context 'with Rails 3.1.0' do
|
61
|
+
before(:each) do
|
62
|
+
Rails.stub!("version").and_return("3.1.0")
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should render some javascript" do
|
66
|
+
ctx.evaluate('js-routes.js').should =~ /window\.Routes/
|
67
|
+
end
|
55
68
|
end
|
56
|
-
end
|
57
69
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
70
|
+
context "with Rails 3.1.1" do
|
71
|
+
before(:each) do
|
72
|
+
Rails.stub!("version").and_return("3.1.1")
|
73
|
+
end
|
74
|
+
context "and initialize on precompile" do
|
75
|
+
before(:each) do
|
76
|
+
Rails.application.config.assets.initialize_on_precompile = true
|
77
|
+
end
|
78
|
+
it "should render some javascript" do
|
79
|
+
ctx.evaluate('js-routes.js').should =~ /window\.Routes/
|
80
|
+
end
|
81
|
+
end
|
82
|
+
context "and not initialize on precompile" do
|
83
|
+
before(:each) do
|
84
|
+
Rails.application.config.assets.initialize_on_precompile = false
|
85
|
+
end
|
86
|
+
it "should raise an exception" do
|
87
|
+
lambda { ctx.evaluate('js-routes.js') }.should raise_error(/Cannot precompile/)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
65
91
|
end
|
66
92
|
end
|
67
93
|
|
94
|
+
|
95
|
+
end
|
96
|
+
context "when not dealing with js-routes.js" do
|
97
|
+
it "should not depend on routes.rb" do
|
98
|
+
ctx = Sprockets::Context.new(Rails.application.assets,
|
99
|
+
'test.js',
|
100
|
+
test_asset_path)
|
101
|
+
ctx.should_not_receive(:depend_on)
|
102
|
+
ctx.evaluate('test.js')
|
103
|
+
end
|
68
104
|
end
|
69
105
|
end
|
70
106
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: js-routes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 2
|
10
|
+
version: 0.7.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bogdan Gusiev
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-11-05 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|