requirejs-rails 0.0.1 → 0.0.2
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/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
|