Comments (9)
Discovered the issue. In RequirejsHelper#_javascript_path
, the name
is being passed as app
; the digests manifest has it stored as app.js
. If I tack on .js
within that function, everything works correctly. So I think either that function needs to be updated, or Requirejs::Rails::Config#module_name_for
needs to return mod['include']+.js
in the almond case.
from requirejs-rails.
I'll see if I can repro from this description. Note that the gem dynamically adds the contents of rjs_manifest.yml to the Sprockets manifest at runtime, so there's no need or effect to having in manifest.yml.
from requirejs-rails.
AH! You're using almond? So presumably you're hitting this via _almond_include_tag
then? If not, what's the stack trace look like when you're seeing this problem in _javascript_path
?
A number of callers of _javascript_path
guard for the .js case and amend name
. Looks like I need to reconsider how that whole business works; looks a tad scattershot in hindsight.
from requirejs-rails.
Yep exactly. From going through the source, I think _almond_include_tag
is the only case where the .js
hasn't been appended.
from requirejs-rails.
Ran into that today without using almond: This happens not only in _almond_include_tag
, but also in resolving paths for modules spec: https://github.com/jwhitley/requirejs-rails/blob/v0.8.2/app/helpers/requirejs_helper.rb#L55.
from requirejs-rails.
@jou, thanks for the report. None of the apps (either test or "real") that I have exhibit the problem as you've described it. I'd like to write a failing test for your case and get it fixed, but it's not immediately clear what the failure mode for your case is. Can you provide any tips on your configuration (e.g. requirejs.yml settings, etc.) that may be triggering this? Thanks!
from requirejs-rails.
I created a Rails app that exhibit the problem: https://gist.github.com/2834831 (clone it via git to see the contents, it's a complete Rails app).
It's doing a layered build, same as described in the README.
When you do a rake assets:precompile
and then start it in production environment with RAILS_ENV=production rails s
, it throws ActionView::Template::Error (appcommon isn't precompiled)
.
The problem is that requirejs_include_tag
tries to resolve the path to the compiled assets for the defined modules in requirejs.yml
to put them in the "paths"
attribute of RequireJS config. But it does so without appending .js
and Rails' asset helper gets confused.
I worked around by patching RequirejsHelper
with https://gist.github.com/2834968. Maybe it's a better idea to appending .js
if necessary to _javascript_path
from requirejs-rails.
No solution for this problem yet? :(
from requirejs-rails.
Hopefully we'll have almond support in the near to medium future. Please use #159 for further discussion.
from requirejs-rails.
Related Issues (20)
- Precompiled asset doesn't generate new digest filename
- Precompiling process is considered slow HOT 7
- uninitialized constant Sprockets::DigestUtils in 0.9.9 HOT 16
- Non-digested files are not created in public/assets
- "rake assets:precompile" raise error at new rails project HOT 10
- undefined method requirejs_include_tag HOT 1
- Almond build broken
- Missing local paths config in development
- Rails 4.2.5.1: NoMethodError: undefined method `paths' for nil:NilClass HOT 23
- Updating to 4.2.5.1 breaks app HOT 1
- sprockets-rails >= 3 throws "Asset was not declared to be precompiled in production" HOT 2
- error : = requirejs_include_tag "application HOT 1
- Error raised on requirejs_include_tags
- RequireJS concatenating JS but not minifying HOT 2
- Precompile doesn't appear to work on Sprockets 3 (Rails 5) HOT 1
- coffeescript compiled every time when request
- css files included with !text are getting stripped from /src/ HOT 2
- requirejs-rails isn't working with rails >= 5.1 because erubis has been replaced with erubi HOT 4
- Multiple Errors when requiring files
- Error: TypeError: content.replace is not a function
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from requirejs-rails.