requirejs-rails 0.7.0 → 0.7.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.
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +1 -1
- data/README.md +50 -23
- data/lib/requirejs/rails/config.rb +7 -0
- data/lib/requirejs/rails/version.rb +1 -1
- data/lib/tasks/requirejs-rails_tasks.rake +1 -1
- data/test/requirejs-rails_test.rb +7 -0
- metadata +10 -10
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# v0.7.1
|
2
|
+
|
3
|
+
- Liberalize asset path filtering. `0.7.0` added filtering on the logical
|
4
|
+
asset path which was too aggressive in that only `.js` files were allowed in
|
5
|
+
builds. The RequireJS config variable `logical_asset_filter` has been
|
6
|
+
added, which allows `.js`, `.html`, `.txt` files by default and is user
|
7
|
+
configurable.
|
8
|
+
|
1
9
|
# v0.7.0
|
2
10
|
|
3
11
|
- Support for [almond](https://github.com/jrburke/almond) via
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -6,15 +6,15 @@ Integrates [RequireJS](http://requirejs.org/) into the Rails 3 Asset Pipeline.
|
|
6
6
|
|
7
7
|
## Usage
|
8
8
|
|
9
|
-
1.
|
9
|
+
1. Add this to your Rails app's `Gemfile`:
|
10
10
|
|
11
11
|
```
|
12
12
|
gem 'requirejs-rails'
|
13
13
|
```
|
14
14
|
|
15
|
-
2.
|
15
|
+
2. Remove all Sprockets directives such as `//= require jquery` from `application.js` and elsewhere. Instead establish JavaScript dependencies using AMD-style `define()` and `require()` calls.
|
16
16
|
|
17
|
-
3.
|
17
|
+
3. Use `requirejs_include_tag` at the top-level of your app's layout(s). Other modules will be pulled in dynamically by `require.js` in development and for production builds optimized by `r.js`. Here's a basic `app/views/layouts/application.html.erb` modified for `requirejs-rails`:
|
18
18
|
|
19
19
|
```erb
|
20
20
|
<!DOCTYPE html>
|
@@ -34,32 +34,35 @@ Integrates [RequireJS](http://requirejs.org/) into the Rails 3 Asset Pipeline.
|
|
34
34
|
</html>
|
35
35
|
```
|
36
36
|
|
37
|
-
4.
|
37
|
+
4. Organize your JavaScript or CoffeeScript code into modules using `define()`:
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
```coffeescript
|
40
|
+
# app/assets/javascripts/views/tweet_view.js.coffee
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
42
|
+
define ['backbone'], (Backbone) ->
|
43
|
+
class TweetView extends Backbone.View
|
44
|
+
# ...
|
45
|
+
```
|
46
46
|
|
47
|
-
5.
|
47
|
+
5. Instantiate your app using `require()` from a top-level module such as `application.js`:
|
48
48
|
|
49
|
-
|
50
|
-
|
49
|
+
```coffeescript
|
50
|
+
# app/assets/javascripts/application.js.coffee
|
51
51
|
|
52
|
-
|
52
|
+
require ['jquery', 'backbone', 'TheApp'], ($, Backbone, TheApp) ->
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
# Start up the app once the DOM is ready
|
55
|
+
$ ->
|
56
|
+
window.App = new TheApp()
|
57
|
+
Backbone.history.start
|
58
|
+
pushState: true
|
59
|
+
window.App.start()
|
60
|
+
```
|
61
61
|
|
62
|
-
6.
|
62
|
+
6. When ready, build your assets for production deployment as usual.
|
63
|
+
`requirejs-rails` defaults to a single-file build of `application.js`.
|
64
|
+
Additional modules and r.js layered builds may be specified via
|
65
|
+
`config\requirejs.yml`; see the Configuration section below.
|
63
66
|
|
64
67
|
```rake assets:precompile```
|
65
68
|
|
@@ -137,6 +140,30 @@ modules:
|
|
137
140
|
wrap: true
|
138
141
|
```
|
139
142
|
|
143
|
+
### Build-time asset filter
|
144
|
+
|
145
|
+
The `requirejs-rails` build process uses the Asset Pipeline to assemble assets
|
146
|
+
for the `r.js` build. By default, assets ending in `.js`, `.html`, and `.txt`
|
147
|
+
will be made available to the build. If you have other asset suffixes to
|
148
|
+
include, use the `logical_asset_filter` config setting to add them.
|
149
|
+
|
150
|
+
For example, if your templates all end in `.templ` like so...
|
151
|
+
|
152
|
+
```javascript
|
153
|
+
// in app/assets/javascripts/myapp.js
|
154
|
+
define(function (require) {
|
155
|
+
var stuff = require('text!stuff.templ');
|
156
|
+
// ...
|
157
|
+
});
|
158
|
+
```
|
159
|
+
|
160
|
+
... then this config setting will ensure they're picked up in the build:
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
# in config/application.rb
|
164
|
+
config.requirejs.logical_asset_filter += [/\.templ$/]
|
165
|
+
```
|
166
|
+
|
140
167
|
## Advanced features
|
141
168
|
|
142
169
|
### Additional data attributes
|
@@ -189,7 +216,7 @@ the [amdjs fork of Underscore](https://github.com/amdjs/underscore).
|
|
189
216
|
## 0.x API Changes
|
190
217
|
|
191
218
|
Usage changes that may break functionality for those upgrading along the 0.x
|
192
|
-
series are documented here. See [the Changelog](CHANGELOG.md) for the full
|
219
|
+
series are documented here. See [the Changelog](https://github.com/jwhitley/requirejs-rails/blob/master/CHANGELOG.md) for the full
|
193
220
|
list of feature additions, bugfixes, etc.
|
194
221
|
|
195
222
|
### v0.5.1
|
@@ -13,6 +13,7 @@ module Requirejs::Rails
|
|
13
13
|
super
|
14
14
|
self.manifest = nil
|
15
15
|
|
16
|
+
self.logical_asset_filter = [/\.js$/,/\.html$/,/\.txt$/]
|
16
17
|
self.tmp_dir = Rails.root + 'tmp'
|
17
18
|
self.bin_dir = Pathname.new(__FILE__+'/../../../../bin').cleanpath
|
18
19
|
|
@@ -130,5 +131,11 @@ module Requirejs::Rails
|
|
130
131
|
def get_binding
|
131
132
|
return binding()
|
132
133
|
end
|
134
|
+
|
135
|
+
def asset_allowed?(asset)
|
136
|
+
self.logical_asset_filter.reduce(false) do |accum, matcher|
|
137
|
+
accum || (matcher =~ asset)
|
138
|
+
end ? true : false
|
139
|
+
end
|
133
140
|
end
|
134
141
|
end
|
@@ -90,7 +90,7 @@ EOM
|
|
90
90
|
"requirejs:clean"] do
|
91
91
|
requirejs.config.source_dir.mkpath
|
92
92
|
requirejs.env.each_logical_path do |logical_path|
|
93
|
-
next unless logical_path
|
93
|
+
next unless requirejs.config.asset_allowed?(logical_path)
|
94
94
|
if asset = requirejs.env.find_asset(logical_path)
|
95
95
|
filename = requirejs.config.source_dir + asset.logical_path
|
96
96
|
filename.dirname.mkpath
|
@@ -37,6 +37,13 @@ class RequirejsRailsConfigTest < ActiveSupport::TestCase
|
|
37
37
|
@cfg.loader = :wombat
|
38
38
|
end
|
39
39
|
end
|
40
|
+
|
41
|
+
test "matches configured logical assets" do
|
42
|
+
assert_equal true, @cfg.asset_allowed?('foo.js')
|
43
|
+
assert_equal false, @cfg.asset_allowed?('bar.frobnitz')
|
44
|
+
@cfg.logical_asset_filter += [/\.frobnitz$/]
|
45
|
+
assert_equal true, @cfg.asset_allowed?('bar.frobnitz')
|
46
|
+
end
|
40
47
|
end
|
41
48
|
|
42
49
|
class RequirejsHelperTest < ActionView::TestCase
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: requirejs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
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-
|
12
|
+
date: 2012-04-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
16
|
-
requirement: &
|
16
|
+
requirement: &70315835618680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: '3.3'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *70315835618680
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rails
|
30
|
-
requirement: &
|
30
|
+
requirement: &70315835617880 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ! '>='
|
@@ -38,10 +38,10 @@ dependencies:
|
|
38
38
|
version: '3.3'
|
39
39
|
type: :development
|
40
40
|
prerelease: false
|
41
|
-
version_requirements: *
|
41
|
+
version_requirements: *70315835617880
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: sqlite3
|
44
|
-
requirement: &
|
44
|
+
requirement: &70315835617240 !ruby/object:Gem::Requirement
|
45
45
|
none: false
|
46
46
|
requirements:
|
47
47
|
- - ! '>='
|
@@ -49,7 +49,7 @@ dependencies:
|
|
49
49
|
version: '0'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
|
-
version_requirements: *
|
52
|
+
version_requirements: *70315835617240
|
53
53
|
description: This gem provides RequireJS support for your Rails 3 application.
|
54
54
|
email:
|
55
55
|
- whitley@bangpath.org
|
@@ -129,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
129
129
|
version: '0'
|
130
130
|
segments:
|
131
131
|
- 0
|
132
|
-
hash:
|
132
|
+
hash: -430483900364221763
|
133
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
134
|
none: false
|
135
135
|
requirements:
|
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
138
|
version: '0'
|
139
139
|
segments:
|
140
140
|
- 0
|
141
|
-
hash:
|
141
|
+
hash: -430483900364221763
|
142
142
|
requirements:
|
143
143
|
- node.js is required for 'rake assets:precompile', used to run the r.js build
|
144
144
|
- If needed, jQuery should be v1.7 or greater (jquery-rails >= 1.0.17).
|