Rails 3.1的发布版本在预编译带有扩展名的sass清单文件时遇到了一些奇怪的问题scss.奇怪的是,默认的清单文件application.scss编译得很好,我看到它public/assets/.
但是,当我尝试编译自定义清单文件时,不会创建任何内容.我在生产配置中启用了预编译选项.
config.assets.precompile += %w( user.scss admin.scss )
Run Code Online (Sandbox Code Playgroud)
就我所知,我正在正确运行预编译rake任务.
rake assets:precompile RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
也许这有帮助.当我使用扩展名css而不是scss创建两个新的清单文件并且需要其中的原始scss文件时,这些新的清单文件将得到尊重并正确编译.为什么application.scss得到这种特殊处理而不是其他sass清单文件?
ruby-on-rails sass ruby-on-rails-3.1 sprockets asset-pipeline
我们有一个Rails 3.1应用程序,允许用户将照片上传到Amazon S3.由于我们在生产中使用S3,我想自动(上cap deploy)将预编译的资产(application.js和application.css&images)上传到我们的S3存储桶中.很简单.
超越设定 config.action_controller.asset_host = "http://assets.example.com"
简而言之,我正在寻找Capistrano工作"配方"的一些例子,但似乎找不到任何现代的(3.1资产管道兼容).我们成功预编制了资产但是如何将它们移到S3?而且,理想情况下,只有那些已经改变的?
当前"食谱"的"肉":
...
after "deploy:update_code", "deploy:pipeline_precompile"
before "deploy:finalize_update", "deploy:copy_database_config"
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
# copy database.yml into project
task :copy_database_config do
production_db_config = "/path_to_config/#{application}.yml"
run "cp #{production_db_config} #{current_release}/config/database.yml"
`puts "replaced database.yml with live copy"`
end
task :pipeline_precompile do
run "cd …Run Code Online (Sandbox Code Playgroud) 在第2.2.2节"CSS和Sass"中,我被告知放入image-url('delete.png')我的sass.所以我有.
但是,它正在生成CSS
background-image: url(/images/delete.png)
Run Code Online (Sandbox Code Playgroud)
而不是我告诉他应该生成的东西,正确而明显的东西,
background-image: url(/assets/delete.png)
Run Code Online (Sandbox Code Playgroud)
什么.哎呀.
我花了很多天试图弄清楚这是从哪里来的.
以下是导致此行为的相关设置的要点.以下是我们的代码库早期版本中相同文件的要点(在我们实施资产管道之后,它实际上工作了大约一周才出现这种令人沮丧的行为).你能发现差异吗?你能想到的任何其他文件可能会导致这种情况吗?
sass-rails因为较新版本Stack level too deep!在预编译时会导致错误.因为实际上对资产管道进行故障排除有点糟糕.
我试图将所有图像移动到public/images并将其添加为加载路径.这在dev中工作(图像可以在任何一个/assets或者访问/images),但是生产的预编译/assets仅将指纹图像放入(obvs)中,因此当sass-rails放入时url(/imagse/delete-120398471029384102364.png),它无法找到.
这可能适用于生产,但在开发中,/ assets文件夹不存在,因此url(/images/delete.png)指令会导致图像不均匀.
我正在尝试将我的Ruby on Rails应用程序从Foundation 4升级到新发布的Foundation 5,并且CSS切换相对平稳.但是,我遇到了切换Javascript文件的问题.
当我切换Foundation.min.js和modernizr.js文件的Foundation 4版本然后重新加载页面时,我在控制台中得到了这个奇怪的JS错误:
Uncaught TypeError: Layer must be a document node foundation.js?body=1:35
FastClick foundation.js?body=1:35
FastClick.attach foundation.js?body=1:35
(anonymous function) foundation.js?body=1:40
(anonymous function)
Run Code Online (Sandbox Code Playgroud)
我甚至不知道FastClick做了什么,但它似乎包含在Foundation 5中,它正在阻止Foundation加载.反过来,这也导致我所有依赖于Foundation的JS都失败了.
任何帮助将不胜感激,谢谢!
ruby-on-rails asset-pipeline zurb-foundation ruby-on-rails-4
这是几个人之前提出过的一个问题,但没有一个问题是以我认为有用的方式得到解答或回答的,所以我写的问题和答案我觉得有帮助.
我有一个使用资产管道的Rails 3.1+应用程序.我想要使用不同的CSS有一个特定的操作.(在我的具体情况下,我有一个打算打印的页面,所以它真的需要完全不同的CSS,不需要任何Javascript.)目前,我只有一个特定于应用程序的CSS文件.如何添加新的CSS文件并指示资产管道使用我的文件?
例如,现在,我的app/assets样子
app/assets
/javascript
application.js
custom.js.coffee
/css
application.css
custom.css.scss
Run Code Online (Sandbox Code Playgroud)
我想添加print.css一个特定操作视图使用的文件.此视图不会使用该application.css文件.我该如何添加print.css?
我最近将我的应用程序升级到rails 3.1并且通常一切似乎都在工作,但有一件事让我疯了.
我有2个主要的js文件,我们称之为application.js和main.js.
application.js中包含我的清单,并在main.js中加载.这工作正常.我的问题是当我处于开发模式并且我对main.js进行了更改,然后刷新页面,网站没有获取更改.为了引入更改,我重新启动了rails服务器.
我在开发中打开了调试模式,但我想知道是否还有其他设置我缺少?
有没有人遇到过这个?
我正在开发一个爱好应用程序并使用一些jQuery.结果很好,但我是一个jQuery noob,我认为我可以对代码结构做一些重大改进.暂且不考虑Coffescript,我一直想知道的一件事是如何.js在资产管道中正确使用特定于模型的文件.
例如,在使用我的用户模型时,我可能会在文档准备好时运行一些我想要运行的代码.假设我把它放在Rails 3.1生成$(document).ready(function() {...});的users.js文件中.
第二天,我正在使用Pet模型,我想要在文档准备好的情况下运行代码.我把它放在Rails准备$(document).ready(function() {...});的pets.js文件的另一个内部.
这是我的问题出现的地方:
$(document).ready(function() {...});在应用程序中使用一次,还是Rails将我的代码编译成单个调用?.js文件?我在生产中遇到asset_path问题.Rails 3.1.1
#config/environments/development.rb
Scc::Application.configure do
# Settings specified here will take precedence over those in config/application.rb
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Log error messages when you accidentally call methods on nil.
config.whiny_nils = true
# Show full error reports and disable caching …Run Code Online (Sandbox Code Playgroud) 我正在尝试在rails中使用音频文件.我创建了一个文件夹audios下app\assets\.我想使用资产预编译,以便我不必将文件放在下面app\public
现在我得到了
ActionController::RoutingError (No route matches [GET] "/audios/audio_file.wav")
Run Code Online (Sandbox Code Playgroud)
如果我从更改URL URL/audios/audio_file.wav,以URL/assets/audio_file.wav它的工作原理.我该如何解决这个问题?什么是正确的方法?
在rails 4中,我的image_tag("assets/logo.png")没有链接到带有摘要的文件,资产也被预编译了它们在public/assets/*中的图像.
我的production.rb:
Books::Application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# Code is not reloaded between requests.
config.cache_classes = true
# Eager load code on boot. This eager loads most of Rails and
# your application in memory, allowing both thread web servers
# and those relying on copy on write to perform better.
# Rake tasks automatically ignore this option for performance.
config.eager_load = true
# Full error reports are disabled and caching …Run Code Online (Sandbox Code Playgroud) asset-pipeline ×10
sass ×2
assets ×1
capistrano ×1
compass-sass ×1
digest ×1
jquery ×1
precompiled ×1
sprockets ×1