dart-rails 0.3.2.pre.p1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +176 -0
- data/Rakefile +38 -0
- data/lib/assets/javascripts/dart.js +22 -0
- data/lib/dart-rails.rb +1 -0
- data/lib/dart/rails/dart_asset_helper.rb +34 -0
- data/lib/dart/rails/dart_engine.rb +14 -0
- data/lib/dart/rails/generators/assets/generator.rb +18 -0
- data/lib/dart/rails/generators/assets/templates/dart/dart_app.dart +7 -0
- data/lib/dart/rails/generators/assets/templates/dart/dart_app.js +2 -0
- data/lib/dart/rails/generators/assets/templates/dart/pubspec.yaml +4 -0
- data/lib/dart/rails/js_compat_engine.rb +33 -0
- data/lib/dart/rails/template_handler.rb +22 -0
- data/lib/dart/rails/version.rb +5 -0
- data/lib/dart/railtie.rb +38 -0
- data/lib/dart/sprockets/directive_processor_dart2js.rb +63 -0
- data/lib/tasks/dart-rails_tasks.rake +15 -0
- data/test/dart-rails_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/test_helper.rb +15 -0
- metadata +164 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6e49471ffcb2c67b6a640073efcb54e7cbdc61da
|
4
|
+
data.tar.gz: deeba9f94a167824fcc7ed65fd34f5aa87764e02
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cef071f90eb7a0efd96c1e8b0d8b62737fa1342682d3e4e61323cd071aa9c3bf3d4dd88fabf7dfe7f821e71dc7adde021ac1814ecc3345d51c86c28636fc0be1
|
7
|
+
data.tar.gz: 22f3fe694ff4ac91032c14ef460ab4d6bb0e88e8428187a8abbcfcc11e95a46d561eab0ae56efd2977ce2ab31153bd41fa3a6da66a673a635104769c458adb91
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,176 @@
|
|
1
|
+
dart-rails
|
2
|
+
==========
|
3
|
+
|
4
|
+
### Idea ###
|
5
|
+
|
6
|
+
Handle [dart](https://www.dartlang.org/ 'dartlang.org') scripts so they get transcoded to js for browsers
|
7
|
+
without dart support. Currently there's only the `Dartium` browser from the development-kit that supports
|
8
|
+
dart directly.
|
9
|
+
|
10
|
+
For now this is a rather stupid attempt, although it works.
|
11
|
+
|
12
|
+
For a working sample check [m0gg/dart-rails-sample](https://github.com/m0gg/dart-rails-sample 'm0gg/dart-rails-sample').
|
13
|
+
|
14
|
+
### Setup ###
|
15
|
+
|
16
|
+
1. `Gemfile`
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'ruby-dart2js'
|
20
|
+
gem 'dart-rails'
|
21
|
+
```
|
22
|
+
|
23
|
+
2. run `rails generate dart:assets` this will bring you:
|
24
|
+
|
25
|
+
```sh
|
26
|
+
rails g dart:assets
|
27
|
+
create app/assets/dart
|
28
|
+
create app/assets/dart/dart_app.dart
|
29
|
+
create app/assets/dart/dart_app.js
|
30
|
+
create app/assets/dart/pubspec.yaml
|
31
|
+
```
|
32
|
+
|
33
|
+
3. Currently you still need to add following to the bottom of your body in the layout:
|
34
|
+
|
35
|
+
`layout.html.erb` (for instance)
|
36
|
+
|
37
|
+
```
|
38
|
+
<%= dart_include_tag 'dart_app' %>
|
39
|
+
<%= javascript_include_tag 'dart' %>
|
40
|
+
```
|
41
|
+
|
42
|
+
4. *Optional:* run `rake pub:get` to respect the dependencies in your `pubspec.yaml`.
|
43
|
+
Initially the pubspec contains `rails_ujs` as dependency, this is just basic for now,
|
44
|
+
so you probably want to omit it if you're still using JQuery.
|
45
|
+
|
46
|
+
*Note:* you'll need to point `DART_SDK_HOME` to the root of your dart-sdk unless your `pub` executable is in the `PATH`
|
47
|
+
|
48
|
+
### Compatibility ###
|
49
|
+
|
50
|
+
###### UglifyJs ######
|
51
|
+
|
52
|
+
Don't worry if you're experiencing a
|
53
|
+
|
54
|
+
```
|
55
|
+
ExecJS::ProgramError: RangeError: Maximum call stack size exceeded
|
56
|
+
```
|
57
|
+
|
58
|
+
This is exactly what it means, a stackoverflow of UglifyJs. According to
|
59
|
+
[RangeError: Maximum call stack size exceeded #414](https://github.com/mishoo/UglifyJS2/issues/414) UglifyJs is
|
60
|
+
massivly recursive and your dart2js file might have blown it. This happened to me with an AngluarDart application.
|
61
|
+
You may simply disable UglifyJs in the environment file.
|
62
|
+
|
63
|
+
```
|
64
|
+
...
|
65
|
+
# Compress JavaScripts and CSS.
|
66
|
+
# config.assets.js_compressor = :uglifier
|
67
|
+
...
|
68
|
+
```
|
69
|
+
|
70
|
+
###### assets:precompile + native .dart files ######
|
71
|
+
|
72
|
+
As of rails 4 we are facing a problem for the productive environments.
|
73
|
+
See [Inability to compile nondigest and digest assets breaks compatibility with bad gems #49](https://github.com/rails/sprockets-rails/issues/49)
|
74
|
+
|
75
|
+
You may optionally add this to your Gemfile
|
76
|
+
|
77
|
+
```
|
78
|
+
gem 'non-stupid-digest-assets', '>= 1.1', github: 'm0gg/non-stupid-digest-assets'
|
79
|
+
```
|
80
|
+
|
81
|
+
this will enable a workaround for digesting the assets while precompiling dart files as
|
82
|
+
seen in [non-stupid-digest-assets](https://github.com/alexspeller/non-stupid-digest-assets) and
|
83
|
+
additionally rewrite the manifests to use the non-digest files.
|
84
|
+
|
85
|
+
###### ruby-dart2js ######
|
86
|
+
|
87
|
+
This gem is needed for the `dart2js` compiler compatibility.
|
88
|
+
|
89
|
+
See [ruby-dart2js](https://github.com/m0gg/ruby-dart2js) on github for setup.
|
90
|
+
|
91
|
+
```
|
92
|
+
<%= javascript_include_tag 'dart' %>
|
93
|
+
```
|
94
|
+
in the layout needs to stay as it is unless you want to drop
|
95
|
+
compatibility for browsers without dart support.
|
96
|
+
It includes the bundled `javascripts/dart.js` from this gem.
|
97
|
+
|
98
|
+
This will parse all script-tags with `type="application/dart"` and replace them with tags that request
|
99
|
+
the appropriate js file.
|
100
|
+
```html
|
101
|
+
<script type="application/dart" src="/assets/dart_app.dart"></script>
|
102
|
+
```
|
103
|
+
would get
|
104
|
+
```html
|
105
|
+
<script type="application/javascript" src="/assets/dart_app.js"></script>
|
106
|
+
```
|
107
|
+
To provide the transcompiled version of you dart-file you'll need a js template
|
108
|
+
with a directive which could look like this
|
109
|
+
```javascript
|
110
|
+
//
|
111
|
+
//= dart dart_app
|
112
|
+
```
|
113
|
+
|
114
|
+
###### Sprockets ######
|
115
|
+
|
116
|
+
`Dart::SprocketsDirectiveDart2js` extends Sprockets base `DirectiveProcessor` and thus each dart-file
|
117
|
+
included (via `dart` directive) in `.js` templates get compiled and inserted.
|
118
|
+
|
119
|
+
|
120
|
+
### Changelog ###
|
121
|
+
v0.3.0 - 21. Jan. 2015:
|
122
|
+
* with v0.2.0 of ruby-dart2js, minifying is supported and will bump the feature version of dart-rails with updated dependencies
|
123
|
+
|
124
|
+
v0.2.5 - 14. Jan. 2015:
|
125
|
+
* fixed a misplaced initializer for non-stupid-digest-assets that caused every asset to be non-digested
|
126
|
+
|
127
|
+
v0.2.4 - 13. Dec. 2014 - update:
|
128
|
+
* corrected `pubspec.yml` to assign valid `dart_app` as name
|
129
|
+
|
130
|
+
v0.2.3 - 13. Dec. 2014:
|
131
|
+
* fix 2 issues documented as [Fix the generated pubspec.yml #13](https://github.com/m0gg/dart-rails/issues/13)
|
132
|
+
and [Generators run each time rails g runs #12](https://github.com/m0gg/dart-rails/issues/12)
|
133
|
+
* generators no longer try to run `rails g dart:assets` as javascript_engine
|
134
|
+
* generated `pubspec.yml` now staticly assigns `dart-app` as name
|
135
|
+
* railtie restructured and split into two engines
|
136
|
+
|
137
|
+
v0.2.2 - 12. Dec. 2014 - update:
|
138
|
+
* dart-rails is now available via rubygems, it's first published with version 0.2.2
|
139
|
+
|
140
|
+
v0.2.2 - 04. Dec. 2014:
|
141
|
+
* due to sprockets digest method, we are forced to use a workaround to allow
|
142
|
+
"precompilation" of .dart files, see [non-stupid-digest-assets](https://github.com/alexspeller/non-stupid-digest-assets)
|
143
|
+
and [Inability to compile nondigest and digest assets breaks compatibility with bad gems #49](https://github.com/rails/sprockets-rails/issues/49)
|
144
|
+
it is optionally (and automatically) available by adding `gem 'non-stupid-digest-assets', '>= 1.1', github: 'm0gg/non-stupid-digest-assets'
|
145
|
+
` to your Gemfile
|
146
|
+
* added dart_app.js to precompile list
|
147
|
+
* faced an issue with UglifyJs stackoverflowing with too large dart2js files
|
148
|
+
|
149
|
+
v0.2.1 - 18. Oct. 2014:
|
150
|
+
* dart2js compilation no longer recurses to infinity and further, this problem came uo to me while working with angularDart, which now compiles fine (takes some time though)
|
151
|
+
* sorry for dev-gap, been quite busy in university
|
152
|
+
|
153
|
+
v0.2.0 - 08. Oct. 2014:
|
154
|
+
* dart-rails can now detect changes in dart code and its dependencies
|
155
|
+
* RailsUjs call is now in the initial dart_app.dart template
|
156
|
+
* fixed pathname to touch for change recognition
|
157
|
+
* renamed relevant constants to Dart2Js
|
158
|
+
* bumped ruby-dart2js version to 0.1.0
|
159
|
+
|
160
|
+
v0.1.2 - 27. Sep. 2014:
|
161
|
+
* slightly different dart2js output directory-tree, now based on md5-hashed timestamps
|
162
|
+
|
163
|
+
v0.1.1 - 29. Aug. 2014:
|
164
|
+
* dart-rails will no longer break assets:precompile
|
165
|
+
|
166
|
+
v0.1.0 - 29. Aug. 2014:
|
167
|
+
* Note that `.dart2js` templates are no longer needed. Sprockets
|
168
|
+
DirectiveProcessor for Javascript ist now capable of including
|
169
|
+
dart2js-compiled scripts via a `//= dart dart_app` directive. See
|
170
|
+
updated sample application on github.
|
171
|
+
* Errors during dart2js compilation will now be handled by Sprockets
|
172
|
+
and thus the exception message will be thrown in the created js file.
|
173
|
+
For now there will be also an output on the console.
|
174
|
+
* As for newest SprocketsRails there is no longer the need of manually
|
175
|
+
adding `dart.js` to the precompilation list.
|
176
|
+
* Compiled scripts will reside in the `#{Rails.root}/tmp/cache/` directory.
|
data/Rakefile
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'DartRails'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
Bundler::GemHelper.install_tasks
|
27
|
+
|
28
|
+
require 'rake/testtask'
|
29
|
+
|
30
|
+
Rake::TestTask.new(:test) do |t|
|
31
|
+
t.libs << 'lib'
|
32
|
+
t.libs << 'test'
|
33
|
+
t.pattern = 'test/**/*_test.rb'
|
34
|
+
t.verbose = false
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
task :default => :test
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// Remap scripts for browsers that are not "Dartium"
|
2
|
+
(function() {
|
3
|
+
if(navigator.userAgent.indexOf('(Dart)') === -1) {
|
4
|
+
var scripts = document.getElementsByTagName("script");
|
5
|
+
var length = scripts.length;
|
6
|
+
// run through all script tags and find the ones with type="application/dart"
|
7
|
+
for(var i = 0; i < length; ++i) {
|
8
|
+
if(scripts[i].type == "application/dart") {
|
9
|
+
if(scripts[i].src && scripts[i].src != '') {
|
10
|
+
var script = document.createElement('script');
|
11
|
+
// rewrite file extension to .js
|
12
|
+
script.src = scripts[i].src.replace(/\.dart(?=\?|$)/, '.js');
|
13
|
+
script.type = "application/javascript";
|
14
|
+
var parent = scripts[i].parentNode;
|
15
|
+
document.currentScript = script;
|
16
|
+
// finally replace script tag
|
17
|
+
parent.replaceChild(script, scripts[i]);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
})();
|
data/lib/dart-rails.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'dart/railtie'
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'action_view'
|
2
|
+
|
3
|
+
module Dart #:nodoc:
|
4
|
+
module Rails #:nodoc:
|
5
|
+
|
6
|
+
# ActionView helper mixin for dart
|
7
|
+
module DartAssetHelper
|
8
|
+
|
9
|
+
# Returns html_safe dart/application script tag.
|
10
|
+
# Example:
|
11
|
+
#
|
12
|
+
# '<script src="/assets/dart_app.dart" type="application/dart"></script>'
|
13
|
+
#
|
14
|
+
# Remember: only one dart script-tag is allowed!
|
15
|
+
def dart_include_tag(*sources)
|
16
|
+
options = sources.extract_options!.stringify_keys
|
17
|
+
sources.uniq.map { |source|
|
18
|
+
tag_options = {
|
19
|
+
'src' => dart_path(source, options),
|
20
|
+
'type' => 'application/dart'
|
21
|
+
}.merge(options)
|
22
|
+
content_tag(:script, '', tag_options)
|
23
|
+
}.join('\n').html_safe
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns path to dart script, similar to javascript_path
|
27
|
+
def dart_path(source, options = {})
|
28
|
+
path_to_asset(source, { :extname => '.dart' }.merge!(options))
|
29
|
+
end
|
30
|
+
|
31
|
+
alias_method :path_to_dart, :dart_path
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rails/engine'
|
2
|
+
|
3
|
+
module Dart #:nodoc:
|
4
|
+
module Rails #:nodoc:
|
5
|
+
class DartEngine < ::Rails::Engine
|
6
|
+
|
7
|
+
initializer :assets do |app|
|
8
|
+
|
9
|
+
# Register mime-types
|
10
|
+
app.assets.register_mime_type 'application/dart', '.dart'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module Dart
|
4
|
+
module Generators
|
5
|
+
class AssetsGenerator < ::Rails::Generators::Base
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
|
8
|
+
# Copies contents of template/dart to assets
|
9
|
+
# invoke with:
|
10
|
+
#
|
11
|
+
# $# rails g dart:assets
|
12
|
+
#
|
13
|
+
def generate_dart
|
14
|
+
directory 'dart', 'app/assets/dart/'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rails/engine'
|
2
|
+
|
3
|
+
module Dart #:nodoc:
|
4
|
+
module Rails #:nodoc:
|
5
|
+
class JsCompatEngine < ::Rails::Engine
|
6
|
+
|
7
|
+
# Handle gem provided javascripts
|
8
|
+
initializer :assets do |app|
|
9
|
+
|
10
|
+
#initialize dart2js dir
|
11
|
+
hash = (Digest::MD5.new << Time.now.to_s).to_s
|
12
|
+
DART2JS_OUT_DIR = app.root.join('tmp', 'cache', 'assets', 'development', 'dart', hash)
|
13
|
+
FileUtils.mkdir_p DART2JS_OUT_DIR unless File.directory?(DART2JS_OUT_DIR)
|
14
|
+
|
15
|
+
# make dart.js compatibility-script accessible for sprockets
|
16
|
+
app.assets.append_path(File.join(root, 'lib', 'assets', 'javascripts'))
|
17
|
+
|
18
|
+
# make dart2js results accessible for sprockets
|
19
|
+
app.assets.append_path(Dart::Rails::JsCompatEngine::DART2JS_OUT_DIR)
|
20
|
+
|
21
|
+
# precompile compatibility-script(s)
|
22
|
+
# TODO: does not work with `app.assets.precompile += ...`
|
23
|
+
::Rails.application.config.assets.precompile += %w(dart_app.js dart.js)
|
24
|
+
|
25
|
+
|
26
|
+
# Mixin process_dart_directive in standard DirectiveProcessor for JS
|
27
|
+
Sprockets::DirectiveProcessor.instance_eval do
|
28
|
+
include Dart::DirectiveProcessorDart2js
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Dart #:nodoc:
|
2
|
+
module Rails #:nodoc:
|
3
|
+
|
4
|
+
# TemplateHandler for dart scripts
|
5
|
+
class TemplateHandler
|
6
|
+
def self.erb_handler
|
7
|
+
debugger
|
8
|
+
@@erb_handler ||= ActionView::Template.registered_template_handler(:erb)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.call(template)
|
12
|
+
debugger
|
13
|
+
erb_handler.call(template)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Finally register TemplateHandler in ActionView
|
20
|
+
ActiveSupport.on_load(:action_view) do
|
21
|
+
ActionView::Template.register_template_handler :dart, Dart::Rails::TemplateHandler
|
22
|
+
end
|
data/lib/dart/railtie.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'rails'
|
2
|
+
require 'rails/railtie'
|
3
|
+
require 'dart/sprockets/directive_processor_dart2js'
|
4
|
+
require 'dart/rails/version'
|
5
|
+
require 'dart/rails/js_compat_engine'
|
6
|
+
require 'dart/rails/dart_asset_helper'
|
7
|
+
require 'dart/rails/generators/assets/generator'
|
8
|
+
require 'dart/rails/template_handler'
|
9
|
+
|
10
|
+
|
11
|
+
module Dart #:nodoc:
|
12
|
+
class Railtie < ::Rails::Railtie
|
13
|
+
|
14
|
+
# [Optionally via: https://github.com/m0gg/non-stupid-digest-assets]
|
15
|
+
# do not digest .dart files
|
16
|
+
# digest during compilation breaks darts 'import' functionality
|
17
|
+
# currently sprockets-rails does not allow mixed procompilation of digest and non-digest assets
|
18
|
+
# see https://github.com/rails/sprockets-rails/issues/49
|
19
|
+
# workaround is a 51-liner gem 'non-stupid-digest-assets'
|
20
|
+
# https://github.com/alexspeller/non-stupid-digest-assets
|
21
|
+
#
|
22
|
+
begin
|
23
|
+
require 'non-stupid-digest-assets'
|
24
|
+
if defined? NonStupidDigestAssets
|
25
|
+
NonStupidDigestAssets.whitelist += [ /.*\.dart/, 'dart_app.js', 'dart_app' ]
|
26
|
+
end
|
27
|
+
rescue Exception => e
|
28
|
+
::Rails.logger.info 'No non-stupid-digest-assets support. You may face issues with native dart-support!'
|
29
|
+
end
|
30
|
+
|
31
|
+
config.after_initialize do |app|
|
32
|
+
# Mixin helper-module in ActionView
|
33
|
+
ActionView::Base.instance_eval do
|
34
|
+
include Dart::Rails::DartAssetHelper
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|