requirejs-rails 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +7 -2
- data/Gemfile.lock +33 -29
- data/README.md +58 -4
- data/lib/requirejs-rails.rb +1 -4
- data/lib/requirejs/rails.rb +5 -0
- data/lib/requirejs/rails/engine.rb +6 -0
- data/lib/requirejs/rails/version.rb +1 -1
- data/requirejs-rails.gemspec +4 -3
- data/test/dummy/.rvmrc +55 -0
- data/test/requirejs-rails_test.rb +10 -0
- data/vendor/assets/javascripts/require.js +23 -5
- metadata +24 -9
data/Gemfile
CHANGED
@@ -5,8 +5,13 @@ source "http://rubygems.org"
|
|
5
5
|
# development dependencies will be added by default to the :development group.
|
6
6
|
gemspec
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
group :development, :test do
|
9
|
+
# jquery-rails is used by the dummy application
|
10
|
+
gem "jquery-rails"
|
11
|
+
|
12
|
+
# ExecJS is used by our tests
|
13
|
+
gem "execjs"
|
14
|
+
end
|
10
15
|
|
11
16
|
# Declare any dependencies that are still in development here instead of in
|
12
17
|
# your gemspec. These might include edge Rails or gems from your path or
|
data/Gemfile.lock
CHANGED
@@ -1,46 +1,48 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
requirejs-rails (0.0.
|
5
|
-
|
4
|
+
requirejs-rails (0.0.2)
|
5
|
+
railties (~> 3.1.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: http://rubygems.org/
|
9
9
|
specs:
|
10
|
-
actionmailer (3.1.
|
11
|
-
actionpack (= 3.1.
|
10
|
+
actionmailer (3.1.3)
|
11
|
+
actionpack (= 3.1.3)
|
12
12
|
mail (~> 2.3.0)
|
13
|
-
actionpack (3.1.
|
14
|
-
activemodel (= 3.1.
|
15
|
-
activesupport (= 3.1.
|
13
|
+
actionpack (3.1.3)
|
14
|
+
activemodel (= 3.1.3)
|
15
|
+
activesupport (= 3.1.3)
|
16
16
|
builder (~> 3.0.0)
|
17
17
|
erubis (~> 2.7.0)
|
18
18
|
i18n (~> 0.6)
|
19
|
-
rack (~> 1.3.
|
19
|
+
rack (~> 1.3.5)
|
20
20
|
rack-cache (~> 1.1)
|
21
21
|
rack-mount (~> 0.8.2)
|
22
22
|
rack-test (~> 0.6.1)
|
23
|
-
sprockets (~> 2.0.
|
24
|
-
activemodel (3.1.
|
25
|
-
activesupport (= 3.1.
|
23
|
+
sprockets (~> 2.0.3)
|
24
|
+
activemodel (3.1.3)
|
25
|
+
activesupport (= 3.1.3)
|
26
26
|
builder (~> 3.0.0)
|
27
27
|
i18n (~> 0.6)
|
28
|
-
activerecord (3.1.
|
29
|
-
activemodel (= 3.1.
|
30
|
-
activesupport (= 3.1.
|
28
|
+
activerecord (3.1.3)
|
29
|
+
activemodel (= 3.1.3)
|
30
|
+
activesupport (= 3.1.3)
|
31
31
|
arel (~> 2.2.1)
|
32
32
|
tzinfo (~> 0.3.29)
|
33
|
-
activeresource (3.1.
|
34
|
-
activemodel (= 3.1.
|
35
|
-
activesupport (= 3.1.
|
36
|
-
activesupport (3.1.
|
33
|
+
activeresource (3.1.3)
|
34
|
+
activemodel (= 3.1.3)
|
35
|
+
activesupport (= 3.1.3)
|
36
|
+
activesupport (3.1.3)
|
37
37
|
multi_json (~> 1.0)
|
38
38
|
arel (2.2.1)
|
39
39
|
builder (3.0.0)
|
40
40
|
erubis (2.7.0)
|
41
|
+
execjs (1.2.9)
|
42
|
+
multi_json (~> 1.0)
|
41
43
|
hike (1.2.1)
|
42
44
|
i18n (0.6.0)
|
43
|
-
jquery-rails (1.0.
|
45
|
+
jquery-rails (1.0.18)
|
44
46
|
railties (~> 3.0)
|
45
47
|
thor (~> 0.14)
|
46
48
|
json (1.6.1)
|
@@ -60,17 +62,17 @@ GEM
|
|
60
62
|
rack
|
61
63
|
rack-test (0.6.1)
|
62
64
|
rack (>= 1.0)
|
63
|
-
rails (3.1.
|
64
|
-
actionmailer (= 3.1.
|
65
|
-
actionpack (= 3.1.
|
66
|
-
activerecord (= 3.1.
|
67
|
-
activeresource (= 3.1.
|
68
|
-
activesupport (= 3.1.
|
65
|
+
rails (3.1.3)
|
66
|
+
actionmailer (= 3.1.3)
|
67
|
+
actionpack (= 3.1.3)
|
68
|
+
activerecord (= 3.1.3)
|
69
|
+
activeresource (= 3.1.3)
|
70
|
+
activesupport (= 3.1.3)
|
69
71
|
bundler (~> 1.0)
|
70
|
-
railties (= 3.1.
|
71
|
-
railties (3.1.
|
72
|
-
actionpack (= 3.1.
|
73
|
-
activesupport (= 3.1.
|
72
|
+
railties (= 3.1.3)
|
73
|
+
railties (3.1.3)
|
74
|
+
actionpack (= 3.1.3)
|
75
|
+
activesupport (= 3.1.3)
|
74
76
|
rack-ssl (~> 1.3.2)
|
75
77
|
rake (>= 0.8.7)
|
76
78
|
rdoc (~> 3.4)
|
@@ -94,6 +96,8 @@ PLATFORMS
|
|
94
96
|
ruby
|
95
97
|
|
96
98
|
DEPENDENCIES
|
99
|
+
execjs
|
97
100
|
jquery-rails
|
101
|
+
rails (~> 3.1.1)
|
98
102
|
requirejs-rails!
|
99
103
|
sqlite3
|
data/README.md
CHANGED
@@ -4,11 +4,15 @@ Integrates [RequireJS](http://requirejs.org/) into the Rails 3 Asset Pipeline.
|
|
4
4
|
|
5
5
|
## Usage
|
6
6
|
|
7
|
-
1.
|
7
|
+
1. Add this to your Rails app's `Gemfile`:
|
8
|
+
|
9
|
+
```
|
10
|
+
gem 'requirejs-rails'
|
11
|
+
```
|
8
12
|
|
9
13
|
2. Your `application.js` file should contain just this snippet. The rest of your JavaScript or CoffeeScript code should be pulled in via RequireJS, including jQuery.
|
10
14
|
|
11
|
-
```
|
15
|
+
```javascript
|
12
16
|
//= require require
|
13
17
|
|
14
18
|
require.config({
|
@@ -16,7 +20,57 @@ Integrates [RequireJS](http://requirejs.org/) into the Rails 3 Asset Pipeline.
|
|
16
20
|
});
|
17
21
|
```
|
18
22
|
|
19
|
-
3. Add any additional config
|
23
|
+
3. Add any additional [config options](http://requirejs.org/docs/api.html#config) you need to the above code, e.g. `paths`.
|
24
|
+
|
25
|
+
4. Organize your JavaScript or CoffeeScript code into modules using `define()`:
|
26
|
+
|
27
|
+
```coffeescript
|
28
|
+
# app/assets/javascripts/views/tweet_view.js.coffee
|
29
|
+
|
30
|
+
define ['backbone'], (Backbone) ->
|
31
|
+
class TweetView extends Backbone.View
|
32
|
+
# ...
|
33
|
+
```
|
34
|
+
|
35
|
+
5. Instantiate your app using `require()` from a top-level script such as `application.js` or a controller-specific file ala `mycontroller.js.coffee`:
|
36
|
+
|
37
|
+
```coffeescript
|
38
|
+
# app/assets/javascripts/mycontroller.js.coffee
|
39
|
+
|
40
|
+
require ['jquery', 'backbone', 'TheApp'], ($, Backbone, TheApp) ->
|
41
|
+
|
42
|
+
# Start up the app once the DOM is ready
|
43
|
+
$ ->
|
44
|
+
window.App = new TheApp()
|
45
|
+
Backbone.history.start
|
46
|
+
pushState: true
|
47
|
+
window.App.start()
|
48
|
+
```
|
49
|
+
|
50
|
+
|
51
|
+
## Using AMD libraries
|
52
|
+
|
53
|
+
I currently recommend placing your AMD libraries into `vendor/assets/javascripts`. The needs of a few specific libraries are discussed below.
|
54
|
+
|
55
|
+
### jQuery
|
56
|
+
|
57
|
+
jQuery users must use jQuery 1.7 or later (`jquery-rails >= 1.0.17`) to use it as an [AMD module](http://wiki.commonjs.org/wiki/Modules/AsynchronousDefinition) with RequireJS. The boilerplate in `application.js` remains unchanged. To use jQuery in a module:
|
58
|
+
|
59
|
+
```coffeescript
|
60
|
+
# app/assets/javascripts/hello.js
|
61
|
+
|
62
|
+
define ['jquery'], ($) ->
|
63
|
+
(id) ->
|
64
|
+
$(id).append('<div>hello!</div>')
|
65
|
+
```
|
66
|
+
|
67
|
+
### Backbone.js
|
68
|
+
|
69
|
+
Backbone AMD support is underway in documentcloud/backbone#710. In the meantime, you can download [Backbone 0.5.3 with AMD support](https://github.com/jrburke/backbone/raw/optamd3/backbone.js) from [jrburke's optamd3 branch](https://github.com/jrburke/backbone/tree/optamd3). Backbone's module name is `backbone`.
|
70
|
+
|
71
|
+
### Underscore.js
|
72
|
+
|
73
|
+
Underscore version 1.2.2 or later has integrated AMD support. Get it from [Underscore.js' homepage](http://documentcloud.github.com/underscore/). Underscore's module name is `underscore`.
|
20
74
|
|
21
75
|
## Changes
|
22
76
|
|
@@ -25,7 +79,7 @@ See [the Changelog](CHANGELOG.md) for recent updates
|
|
25
79
|
## TODOs
|
26
80
|
|
27
81
|
- Sample app, including jQuery usage
|
28
|
-
- Support RequireJS precompilation via r.js
|
82
|
+
- Support RequireJS precompilation via r.js (see issue #1)
|
29
83
|
- Generator and/or template support.. ?
|
30
84
|
|
31
85
|
----
|
data/lib/requirejs-rails.rb
CHANGED
data/requirejs-rails.gemspec
CHANGED
@@ -18,8 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.files = git_files
|
19
19
|
s.require_path = 'lib'
|
20
20
|
|
21
|
-
s.add_dependency "
|
22
|
-
s.
|
23
|
-
|
21
|
+
s.add_dependency "railties", "~> 3.1.1"
|
22
|
+
s.add_development_dependency "rails", "~> 3.1.1"
|
24
23
|
s.add_development_dependency "sqlite3"
|
24
|
+
|
25
|
+
s.requirements << "If needed, jQuery should be v1.7 or greater (jquery-rails >= 1.0.17)."
|
25
26
|
end
|
data/test/dummy/.rvmrc
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
|
3
|
+
# This is an RVM Project .rvmrc file, used to automatically load the ruby
|
4
|
+
# development environment upon cd'ing into the directory
|
5
|
+
|
6
|
+
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
|
7
|
+
environment_id="ruby-1.9.3-p0@requirejs-rails"
|
8
|
+
|
9
|
+
#
|
10
|
+
# Uncomment following line if you want options to be set only for given project.
|
11
|
+
#
|
12
|
+
# PROJECT_JRUBY_OPTS=( --1.9 )
|
13
|
+
|
14
|
+
#
|
15
|
+
# First we attempt to load the desired environment directly from the environment
|
16
|
+
# file. This is very fast and efficient compared to running through the entire
|
17
|
+
# CLI and selector. If you want feedback on which environment was used then
|
18
|
+
# insert the word 'use' after --create as this triggers verbose mode.
|
19
|
+
#
|
20
|
+
if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
|
21
|
+
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
|
22
|
+
then
|
23
|
+
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
|
24
|
+
|
25
|
+
if [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]]
|
26
|
+
then
|
27
|
+
. "${rvm_path:-$HOME/.rvm}/hooks/after_use"
|
28
|
+
fi
|
29
|
+
else
|
30
|
+
# If the environment file has not yet been created, use the RVM CLI to select.
|
31
|
+
if ! rvm --create use "$environment_id"
|
32
|
+
then
|
33
|
+
echo "Failed to create RVM environment '${environment_id}'."
|
34
|
+
return 1
|
35
|
+
fi
|
36
|
+
fi
|
37
|
+
|
38
|
+
#
|
39
|
+
# If you use an RVM gemset file to install a list of gems (*.gems), you can have
|
40
|
+
# it be automatically loaded. Uncomment the following and adjust the filename if
|
41
|
+
# necessary.
|
42
|
+
#
|
43
|
+
# filename=".gems"
|
44
|
+
# if [[ -s "$filename" ]]
|
45
|
+
# then
|
46
|
+
# rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
|
47
|
+
# fi
|
48
|
+
|
49
|
+
# If you use bundler, this might be useful to you:
|
50
|
+
# if command -v bundle && [[ -s Gemfile ]]
|
51
|
+
# then
|
52
|
+
# bundle install
|
53
|
+
# fi
|
54
|
+
|
55
|
+
|
@@ -1,8 +1,18 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
+
require 'execjs'
|
4
|
+
require 'pathname'
|
5
|
+
|
3
6
|
class RequirejsRailsTest < ActiveSupport::TestCase
|
4
7
|
test "truth" do
|
5
8
|
assert_kind_of Module, Requirejs
|
6
9
|
assert_kind_of Module, Requirejs::Rails
|
10
|
+
assert_kind_of Class, Requirejs::Rails::Engine
|
11
|
+
end
|
12
|
+
|
13
|
+
test "require.js version" do
|
14
|
+
require_js = Pathname.new(__FILE__+'/../../vendor/assets/javascripts/require.js').cleanpath.read
|
15
|
+
context = ExecJS.compile(require_js)
|
16
|
+
assert_equal "1.0.2", context.eval("require.version")
|
7
17
|
end
|
8
18
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/** vim: et:ts=4:sw=4:sts=4
|
2
|
-
* @license RequireJS 1.0.
|
2
|
+
* @license RequireJS 1.0.2 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
3
3
|
* Available via the MIT or new BSD license.
|
4
4
|
* see: http://github.com/jrburke/requirejs for details
|
5
5
|
*/
|
@@ -11,7 +11,7 @@
|
|
11
11
|
var requirejs, require, define;
|
12
12
|
(function () {
|
13
13
|
//Change this version number for each release.
|
14
|
-
var version = "1.0.
|
14
|
+
var version = "1.0.2",
|
15
15
|
commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,
|
16
16
|
cjsRequireRegExp = /require\(\s*["']([^'"\s]+)["']\s*\)/g,
|
17
17
|
currDirRegExp = /^\.\//,
|
@@ -268,6 +268,10 @@ var requirejs, require, define;
|
|
268
268
|
if (pkgConfig && name === pkgName + '/' + pkgConfig.main) {
|
269
269
|
name = pkgName;
|
270
270
|
}
|
271
|
+
} else if (name.indexOf("./") === 0) {
|
272
|
+
// No baseName, so this is ID is resolved relative
|
273
|
+
// to baseUrl, pull off the leading dot.
|
274
|
+
name = name.substring(2);
|
271
275
|
}
|
272
276
|
}
|
273
277
|
return name;
|
@@ -407,7 +411,8 @@ var requirejs, require, define;
|
|
407
411
|
map = manager.map,
|
408
412
|
fullName = map.fullName,
|
409
413
|
args = manager.deps,
|
410
|
-
listeners = manager.listeners
|
414
|
+
listeners = manager.listeners,
|
415
|
+
cjsModule;
|
411
416
|
|
412
417
|
//Call the callback to define the module, if necessary.
|
413
418
|
if (cb && isFunction(cb)) {
|
@@ -425,7 +430,11 @@ var requirejs, require, define;
|
|
425
430
|
//If setting exports via "module" is in play,
|
426
431
|
//favor that over return value and exports. After that,
|
427
432
|
//favor a non-undefined return value over exports use.
|
428
|
-
|
433
|
+
cjsModule = manager.cjsModule;
|
434
|
+
if (cjsModule &&
|
435
|
+
cjsModule.exports !== undefined &&
|
436
|
+
//Make sure it is not already the exports value
|
437
|
+
cjsModule.exports !== defined[fullName]) {
|
429
438
|
ret = defined[fullName] = manager.cjsModule.exports;
|
430
439
|
} else if (ret === undefined && manager.usingExports) {
|
431
440
|
//exports already set the defined value.
|
@@ -1048,7 +1057,16 @@ var requirejs, require, define;
|
|
1048
1057
|
//Regular dependency.
|
1049
1058
|
if (!urlFetched[url] && !loaded[fullName]) {
|
1050
1059
|
req.load(context, fullName, url);
|
1051
|
-
|
1060
|
+
|
1061
|
+
//Mark the URL as fetched, but only if it is
|
1062
|
+
//not an empty: URL, used by the optimizer.
|
1063
|
+
//In that case we need to be sure to call
|
1064
|
+
//load() for each module that is mapped to
|
1065
|
+
//empty: so that dependencies are satisfied
|
1066
|
+
//correctly.
|
1067
|
+
if (url.indexOf('empty:') !== 0) {
|
1068
|
+
urlFetched[url] = true;
|
1069
|
+
}
|
1052
1070
|
}
|
1053
1071
|
}
|
1054
1072
|
}
|
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.0.
|
4
|
+
version: 0.0.2
|
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: 2011-11-
|
12
|
+
date: 2011-11-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: railties
|
16
|
+
requirement: &70199933410040 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,21 @@ dependencies:
|
|
21
21
|
version: 3.1.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70199933410040
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rails
|
27
|
+
requirement: &70199933409200 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.1.1
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70199933409200
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: sqlite3
|
27
|
-
requirement: &
|
38
|
+
requirement: &70199933408160 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,7 +43,7 @@ dependencies:
|
|
32
43
|
version: '0'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *70199933408160
|
36
47
|
description: This gem provides RequireJS support for your Rails 3 application.
|
37
48
|
email:
|
38
49
|
- whitley@bangpath.org
|
@@ -49,11 +60,14 @@ files:
|
|
49
60
|
- README.md
|
50
61
|
- Rakefile
|
51
62
|
- lib/requirejs-rails.rb
|
63
|
+
- lib/requirejs/rails.rb
|
64
|
+
- lib/requirejs/rails/engine.rb
|
52
65
|
- lib/requirejs/rails/version.rb
|
53
66
|
- lib/tasks/requirejs-rails_tasks.rake
|
54
67
|
- requirejs-rails.gemspec
|
55
68
|
- vendor/assets/javascripts/order.js
|
56
69
|
- vendor/assets/javascripts/require.js
|
70
|
+
- test/dummy/.rvmrc
|
57
71
|
- test/dummy/Rakefile
|
58
72
|
- test/dummy/app/assets/javascripts/application.js
|
59
73
|
- test/dummy/app/assets/stylesheets/application.css
|
@@ -101,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
115
|
version: '0'
|
102
116
|
segments:
|
103
117
|
- 0
|
104
|
-
hash:
|
118
|
+
hash: 2678184901028172103
|
105
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
120
|
none: false
|
107
121
|
requirements:
|
@@ -110,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
124
|
version: '0'
|
111
125
|
segments:
|
112
126
|
- 0
|
113
|
-
hash:
|
127
|
+
hash: 2678184901028172103
|
114
128
|
requirements:
|
115
129
|
- If needed, jQuery should be v1.7 or greater (jquery-rails >= 1.0.17).
|
116
130
|
rubyforge_project:
|
@@ -119,6 +133,7 @@ signing_key:
|
|
119
133
|
specification_version: 3
|
120
134
|
summary: Use RequireJS with the Rails 3 Asset Pipeline
|
121
135
|
test_files:
|
136
|
+
- test/dummy/.rvmrc
|
122
137
|
- test/dummy/Rakefile
|
123
138
|
- test/dummy/app/assets/javascripts/application.js
|
124
139
|
- test/dummy/app/assets/stylesheets/application.css
|