我在生产中预编译资产时遇到了NoMethodError: undefined method start_with?' for nil:NilClass错误。
这似乎是一个问题uglifier,我正在使用以下宝石:
导轨 (5.2.2)
丑化者 (4.1.9)
链轮-导轨 (3.2.1)
therubyracer (0.12.3)
日志跟踪:
** Invoke assets:precompile (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke yarn:install (first_time)
** Execute yarn:install
yarn install v1.13.0
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.36s.
** Execute assets:precompile
rake aborted!
NoMethodError: undefined method `start_with?' for nil:NilClass
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:225:in `error_message'
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:234:in `parse_result'
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:216:in `run_uglifyjs'
/usr/lib64/ruby/gems/2.4.0/gems/uglifier-4.1.9/lib/uglifier.rb:168:in `compile'
/usr/lib64/ruby/gems/2.4.0/gems/sprockets-3.7.1/lib/sprockets/compressing.rb:65:in `block in js_compressor=' …Run Code Online (Sandbox Code Playgroud) 几年后我再次使用 Rails(最后一次使用 Rails 4)。我有多个刺激控制器引用一个名为metric_defaults.js. 该文件仅包含一组平面定义,例如:
Chart.defaults.elements.line.tension = 0.25;
Chart.defaults.elements.line.borderWidth = 5;
Run Code Online (Sandbox Code Playgroud)
在 Rails 7 开发环境中,此导入可以很好地与import '../metric_defaults.js'每个刺激控制器配合使用,但在生产中我得到:
Failed to load resource: the server responded with a status of 404 (Not Found) (metric_defaults.js)
Run Code Online (Sandbox Code Playgroud)
我花了一天的时间试图找出这个问题,但所有努力都失败了。一些花絮:
任何想法表示赞赏
有人在Heroku,Cedar堆栈上运行Rails 3.1 RC5吗?到目前为止,一切似乎都有效,除了没有显示资产图像(例如徽标,图标,main_bg等).
我不确定它是否与此问题有关.
想听听任何能解决这个问题的人的意见.
我们刚刚使用新的资产管道部署了一个Rails 3.1应用程序.在开发中,一切看起来都很好,但在生产中,所有资产图像都缺失了.在部署时,我们遵循Ruby on Rails边缘指南.例如,我们的应用程序中的一个简单代码段:
asset_path "favicon.png", "images"
Run Code Online (Sandbox Code Playgroud)
这在生产中产生:
/assets/favicon.png
Run Code Online (Sandbox Code Playgroud)
但指纹缺失(因此它是生产的死链接).我们已经在没有"图像"的情况下尝试了它image_tag.什么都行不通.
附加信息:
已经看过并尝试过:
我刚刚升级到Rails 3.1,我遇到了Asset Pipeline的问题.基本上,当我在做本地开发时,我对我的任何.css.scss文件进行了更改,我必须运行:
rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
在命令行上,然后在我看到任何样式更改之前刷新浏览器.如何在每次重新加载开发页面时自动进行预编译?
提前致谢!
我最近向Heroku添加了一个项目.但是,.css文件或.js文件似乎都没有工作.
我正在使用Twitter的Bootstrap .css和.js文件.我已将文件添加到供应商/资产中的各自目录中.
基于我在这里问过的其他问题,我在Heroku上从Bamboo升级到了Cedar.我也试过rake assets:precompile RAILS_ENV=production,改config.assets.enabled = true以config.assets.enabled = false在application.rb中,config.assets.compile = false config.assets.compile = true在production.rb,以及有关的,我能想到的上面的东西尽可能多的组合.
一切都在当地很好.
(添加指向github的链接以尝试提供更多信息.) https://github.com/moctopus/sixtydays
对于用于测试Rails应用程序的Rails引擎Konacha,我们需要一种方法来查找Sprockets可以编译为JavaScript的所有文件.
现在我们使用类似的东西
Dir['spec/javascripts/**/*_spec.*']
Run Code Online (Sandbox Code Playgroud)
但这种回升.bak,.orig以及其他备份文件.
Sprockets能否以某种方式告诉我们它是否知道如何编译文件,以便自动排除备份文件?
content_type_of 无济于事:
Rails.application.assets.content_type_of('test/javascripts/foo.js.bak')
=> "application/javascript"
Run Code Online (Sandbox Code Playgroud) 我有一个问题,让sprockets加载'application.js'文件的manifest部分中指定的文件.我已经尝试在'application.js'文件中重新排序指令,我尝试升级和降级ruby/rails,但没有任何东西导致sprockets加载指令中的文件.
我在"assets/javascripts"和"assets/stylesheets"文件夹中添加了一些其他文件,以查看sprockets是否会加载这些文件,但这些文件都没有加载.但是,如果进入控制台并键入"Sprockets.class",它会识别模块,因此似乎确实正在加载链轮.
我使用的是Ruby 2.0.0/Rails 3.2.8
这是我的Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.8'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
gem "rspec-rails", :group => [:test, :development]
group :test do
gem "factory_girl_rails"
gem "capybara"
gem "guard-rspec"
gem "debugger"
end
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem "jquery-rails"
Run Code Online (Sandbox Code Playgroud)
这是我的Gemfile.lock,其中包含与sprockets或jQuery相关的任何条目
specs:
actionpack (3.2.1)
sprockets (~> 2.1.2
sprockets (2.1.3)
jquery-rails (3.0.4)
DEPENDENCIES
jquery-rails
Run Code Online (Sandbox Code Playgroud)
编辑1 - Application.js
// This is a …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用这个turtorial将我的rails应用程序部署到heroku:
https://devcenter.heroku.com/articles/getting-started-with-rails4
所以,我使用rails 4.1.1和ruby 2.1.1
我的Gemfile gem 'rails_12factor', group: :production里面有.
我的application.rb:
require File.expand_path('../boot', __FILE__)
require 'rails/all'
Bundler.require(*Rails.groups)
module Charticus
class Application Rails::Application
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for …Run Code Online (Sandbox Code Playgroud) 使用Grails资源插件,您可以使用gsp布局,如下所示:
<!DOCTYPE html>
<html>
<head>
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<g:layoutBody/>
<g:javascript library="jquery" plugin="jquery" />
<r:layoutResources />
</body>
Run Code Online (Sandbox Code Playgroud)
使用r:layoutResources标记,您可以指定资源应包含在JQuery之后页面的底部,该位置位于布局gsp的底部。
有没有办法对Asset-pipeline插件做同样的事情?如何在JQuery包含之后将资源放在文档事件的底部?
asset-pipeline ×10
heroku ×3
assets ×2
sprockets ×2
grails ×1
grails-2.0 ×1
groovy ×1
javascript ×1
jquery ×1
konacha ×1
precompile ×1
ruby ×1
stimulusjs ×1
uglifier ×1