标签: asset-pipeline

使用Rails 3.1的资产管道预编译.scss清单文件

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

17
推荐指数
1
解决办法
5873
查看次数

使用Capistrano配方将预编译的Rails 3.1资产上载到Amazon S3

我们有一个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)

capistrano ruby-on-rails ruby-on-rails-3 asset-pipeline

17
推荐指数
2
解决办法
9253
查看次数

sass-rails资产管道:错误地生成图像路径; `url(/images/blah.png)`而不是`url(/assets/blah.png)`

第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!在预编译时会导致错误.
  • 我们正在使用Compass.

两次针对变通办法的黑客尝试

因为实际上对资产管道进行故障排除有点糟糕.

1:将图像放入/图像

我试图将所有图像移动到public/images并将其添加为加载路径.这在dev中工作(图像可以在任何一个/assets或者访问/images),但是生产的预编译/assets仅将指纹图像放入(obvs)中,因此当sass-rails放入时url(/imagse/delete-120398471029384102364.png),它无法找到.

2:使/ public/images成为/ public/assets的符号链接

这可能适用于生产,但在开发中,/ assets文件夹不存在,因此url(/images/delete.png)指令会导致图像不均匀.

ruby-on-rails sass asset-pipeline compass-sass

17
推荐指数
3
解决办法
8796
查看次数

基础5升级:"图层必须是文档节点"

我正在尝试将我的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

17
推荐指数
2
解决办法
4059
查看次数

将特定于页面的CSS添加到Rails Asset Pipeline

这是几个人之前提出过的一个问题,但没有一个问题是以我认为有用的方式得到解答或回答的,所以我写的问题和答案我觉得有帮助.


我有一个使用资产管道的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

ruby-on-rails asset-pipeline

17
推荐指数
2
解决办法
2万
查看次数

Javascript在具有资产管道的开发模式中缓存

我最近将我的应用程序升级到rails 3.1并且通常一切似乎都在工作,但有一件事让我疯了.

我有2个主要的js文件,我们称之为application.js和main.js.

application.js中包含我的清单,并在main.js中加载.这工作正常.我的问题是当我处于开发模式并且我对main.js进行了更改,然后刷新页面,网站没有获取更改.为了引入更改,我重新启动了rails服务器.

我在开发中打开了调试模式,但我想知道是否还有其他设置我缺少?

有没有人遇到过这个?

ruby-on-rails-3.1 asset-pipeline

16
推荐指数
1
解决办法
7664
查看次数

如何在Rails 3.1资产管道中正确使用jQuery?

我正在开发一个爱好应用程序并使用一些jQuery.结果很好,但我是一个jQuery noob,我认为我可以对代码结构做一些重大改进.暂且不考虑Coffescript,我一直想知道的一件事是如何.js在资产管道中正确使用特定于模型的文件.

例如,在使用我的用户模型时,我可能会在文档准备好时运行一些我想要运行的代码.假设我把它放在Rails 3.1生成$(document).ready(function() {...});users.js文件中.

第二天,我正在使用Pet模型,我想要在文档准备好的情况下运行代码.我把它放在Rails准备$(document).ready(function() {...});pets.js文件的另一个内部.

这是我的问题出现的地方:

  1. 应用程序运行时如何编译?
  2. 我用上面的例子实例化了两个jQuery实例吗?
  3. 我应该只$(document).ready(function() {...});在应用程序中使用一次,还是Rails将我的代码编译成单个调用?
  4. 什么属于特定于模型的.js文件?
  5. 它在开发和生产模式中的执行方式是否存在差异?

jquery ruby-on-rails ruby-on-rails-3.1 asset-pipeline

16
推荐指数
1
解决办法
2863
查看次数

scss文件rails中的asset_path

我在生产中遇到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)

ruby-on-rails ruby-on-rails-3.1 asset-pipeline

16
推荐指数
1
解决办法
1万
查看次数

Rails中的音频资产带来无路由匹配

我正在尝试在rails中使用音频文件.我创建了一个文件夹audiosapp\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它的工作原理.我该如何解决这个问题?什么是正确的方法?

ruby-on-rails asset-pipeline

16
推荐指数
1
解决办法
4396
查看次数

rails 4 image_tag没有链接到我的消化图像资源

在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)

assets digest precompiled asset-pipeline ruby-on-rails-4

16
推荐指数
1
解决办法
2万
查看次数