我将我的应用程序升级到rails31 ..一切正常,但我有资产管道的问题.即时通讯使用rails3.1.rc5
我的js和我的css合并但没有缩小..我使用:
RAILS_ENV=production rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
预编译资产..
我在production.rb中有这些设置
config.assets.compress = true
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :scss
Run Code Online (Sandbox Code Playgroud)
合并文件并获取名称中的md5,但它们不会缩小.
任何帮助,将不胜感激
我将此行添加load 'deploy/assets'到我的Capfile中以使用Rails 3.1部署资产.
Capistrano走到了这条路线
* executing "cd /home/deploy/armonia/stage/releases/20110928021521 && bundle exec rake RAILS_ENV=stage RAILS_GROUPS=assets assets:precompile"
然后失败了
Could not find multi_json-1.0.3 in any of the sources这很奇怪,因为我bundle show multi_json在部署服务器上运行时发现了gem .
是什么导致这个?
我在Heroku上运行了一个Rails 3.1.3应用程序,利用S3进行资产托管asset_sync.我的app/assets/css目录中包含一个包含两个文件的子目录:main.css.scss和categories.css.scss.我的内容如下production.rb:
config.assets.precompile += [ 'admin/main.css.scss', 'admin/categories.css.scss', 'print.css', 'products.css.scss', 'services.css.scss' ]
当我推送到Heroku时,我的所有资产都被预编译并上传,但这两个文件除外.我是否需要执行某种黑魔法来包含这两个文件?
我在Rails 3.2.8上,我想切换到使用资产管道.
我在我的开发机器上,我的资产设置如下
app/assets/stylesheets/application.css:
...
*= require_directory ../public/javascripts/jquery/themes/base
*= require_directory ../public/prototype/stylesheets/css
*/
Run Code Online (Sandbox Code Playgroud)
我的所有样式表和js和图像都在公共文件夹中,这是现在的一个包罗万象.文件夹结构:
app/assets
/stylesheets
/application.css
/javascripts
/images
/public
/stylesheets
/javascripts
/prototype
/images
Run Code Online (Sandbox Code Playgroud)
目前该public/assets/application.css文件为空.如何在开发环境中编译此文件?
当我Rails.application.config.assets.paths在rails控制台中运行时,我得到的app/assets/public不是资产的完整目录路径.
在视图中,我调用资产管道样式表:
<%= stylesheet_link_tag 'application.css' %>
编辑1:我尝试将所有样式表移动到app/assets/stylesheets/但是它没有在视图中正确编译application.css.它汇总到这个:
<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />
当我查看链接时,localhost:3000/assets/application.css它是一个空白文件.
编辑2:我使用单引号而不是双引号来修复语法错误.我想我现在已经找到了路径.谢谢!
每个人都知道如何使用stylesheet_link_tag来链接到一个样式表,但我想其实是包括在页面本身的整个样式表.(不,这通常不是一个很好的做法,但在这种情况下它是有道理的.)
stylesheet_include_tag 并不存在,并且在Rails中比一个更大的坏人的同事比我说的没有一个简单的方法.
问题:
实际上是否可以使用资产管道并仍然将CSS或JavaScript文件(从Sass或CoffeeScript编译!)的内容嵌入到.haml视图中?怎么样?
为清晰起见添加:
我希望我的布局能够包含以下内容:
= stylesheet_link_tag "base"
= stylesheet_embed_tag "page-specific-styles/foo"
Run Code Online (Sandbox Code Playgroud)
并按照这些行生成输出HTML:
<link rel="stylesheet" href="/base.css" />
<style type="text/css">.foo { color: red; }</style>
Run Code Online (Sandbox Code Playgroud)
更新
如果正确设置了initalizer,可以在Haml中使用Sass ,但我似乎无法@import "foo"从这个上下文foo.css.sass中看到资产管道中的样式表.请注意@import "compass"(假设您有罗盘宝石)确实有效.
这看起来像(haml):
%style
:sass
@import "foo"
Run Code Online (Sandbox Code Playgroud)
Rails给出了一个错误,即"foo"无法找到,即使它声称正在寻找app/assets/stylesheets(这就是foo.css.sass生命的地方).
所以,这感觉更接近,但仍然不完全.
ruby-on-rails ruby-on-rails-3 asset-pipeline ruby-on-rails-3.2 ruby-on-rails-4
我一直在与Rails 4进行战斗,试图让它获取我的资产并创建正确的链接.通常,服务器重新启动和硬刷新的组合将使URL正确地通过,但并非总是如此. tmp:clear并且assetpipeline:clobber也不适合我.
问题在于image_path方法.我目前在自定义Form对象中,所以我这样做了:
class WalletForm
include ActionView::Helpers::AssetUrlHelper
def give_me_path
image_path("logo.jpg")
end
end
Run Code Online (Sandbox Code Playgroud)
image_path在开发和测试模式下给了我"images/logo.jpg".这应该是"assets/logo.jpg".我在过去已经注意到当rails无法找到图像时,它将使用images/logo.jpg而不是资产.我猜这是因为你把它放在管道之外的public/images文件夹中.但该文件确实存在app/assets/images,并且位于正确的位置.(我已经复制并粘贴了文件名,我也尝试重命名该文件.我重新启动了Web服务器,重新启动了pow)我甚至预先编译了资产,RAILS_ENV=test试图验证我的徽标是否被管道拾取, 假设
我不确定还有什么可以研究的.有什么建议?
我正在与Capistrano一起部署到我的新VPS.在第一次部署(上限部署)之后,一切正常(站点正在运行),但第二次部署在资产上失败:预编译错误.
我正在运行rails 3.2.13,ruby 2.0.0,rvm.
错误:
* executing "cd -- /home/rails/releases/20140116121250 && RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile"
servers: ["IP"]
[IP] executing command
*** [err :: IP] bash: line 1: 23406 Killed RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile
command finished in 84187ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/rails/releases/20140116121250; true"
servers: ["IP"]
[IP] executing command
command finished in 519ms
failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'default' -c 'cd -- /home/rails/releases/20140116121250 && RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile'" on IP
Run Code Online (Sandbox Code Playgroud)
deploy.rb文件:
set :application, …Run Code Online (Sandbox Code Playgroud) deployment capistrano ruby-on-rails asset-pipeline ruby-on-rails-3.2
似乎已经更新了一些破坏指南针或橡皮糖的东西.它几天前工作得很好,直到我更新了我的宝石和宝石文件.现在即使回到早期的gemfile,它仍然给我错误.
我在这里开了一个详细的问题,详细介绍了如何在这里重新创建它
有谁知道我可以调试这个问题的更好方法?我实际上无法移动它或做任何事情.
怀疑的代码行
从完整的堆栈跟踪中我可以看到错误来自罗盘中的这条线,它似乎从Gumby的这条线获得变量
最小代码量
重现错误所需的最小代码量是Gumby的安装,它已安装在这里的项目中,我的gemfile包含rails 4.0.
的Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.0.2'
gem 'jquery-rails'
gem 'jquery-ui-rails'
gem 'turbolinks'
gem 'sass-rails'
gem 'coffee-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'compass-rails'
gem 'modular-scale'
gem "slim-rails"
gem 'sqlite3'
gem "mini_magick"
gem 'carrierwave'
gem "fog", "~> 1.3.1"
gem "pg"
gem 'will_paginate', '~> 3.0.0'
gem 'resque', "~> 1.22.0", :require => "resque/server"
gem 'exception_notification'
gem 'httparty'
gem 'devise'
gem "active_model_serializers"
gem "rails_best_practices"
group …Run Code Online (Sandbox Code Playgroud) ruby-on-rails sass asset-pipeline ruby-on-rails-4 compass-sass
我rake assets:precompile在我的控制台中运行命令,然后当我转到localhost:3000时,我的样式表在我的application.css文件中停止编译...
以前,在开发模式下一切都很完美:编写样式表,在application.css文件中需要它,然后查看我视图中显示的样式.所以资产管道"习惯"工作.
我尝试使用SOF上的其他答案来使其工作(并且失败):
config.assets.enabled = true在config/development.rb中我添加了以下内容:
config.serve_static_assets = false 这样Rails就不会在public/assets文件夹中查找我的样式表config.assets.compress = falseconfig.assets.debug = true 看到正在加载的css的痕迹config.assets.compile = true 我删除了public/assets我运行后创建的文件夹rake assets:precompile- 删除文件夹的另一种方法是运行命令,bundle exec rake assets:clobber但这并没有解决问题
tmp/cache文件夹无济于事......
我也有以下设置
application.html.erb
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
application.css
*=要求自我
*= require_tree.
*=需要定制
*=需要侧边栏
*=需要标志/基本
*= require flags/flags16
*= require flags/flags32
*=要求font-awesome.min
在浏览器的application.css中我看到:

为什么我的rake assets:precompile开发模式会破坏我的资产管道?在此先感谢您的帮助,我花了至少5个小时试图解决这个问题,并相信我已尽我所能找到解决方案......
我在Heroku上部署的Rails 5应用程序中面临资产加载问题.
应用配置是,
ruby =>'2.3.1'
rails =>'〜> 5.0.1'
当图像存储在路径上时,
应用程序/资产/家/ image1.jpg
我正在访问它,因为,
= image_tag('/assets/home/image1.jpg’)
Run Code Online (Sandbox Code Playgroud)
它在Development ENV中正常工作,但在Production ENV中没有.
根据Heroku日志,
ActionController :: RoutingError(没有路由匹配[GET]"/assets/home/image1.jpg")
如果我直接将图像移动到
应用程序/资产/ image1.jpg
然后它致力于生产ENV.
请指导一下.
谢谢
asset-pipeline ×10
capistrano ×2
ruby ×2
assets ×1
compass-sass ×1
css ×1
deployment ×1
heroku ×1
sass ×1
stylesheet ×1