我正在使用Ruby on Rails 3.1,我想将我的网站徽标(即通过新资产管道处理的图像)添加到电子邮件中.
如果在我的邮件程序视图文件中,我说明以下内容:
<% # Note: '@root_url' is my application hostname (eg: http://www.mysite.com) %>
<%= link_to image_tag( "#{@root_url.to_s}/images/logo.png"), @root_url.to_s %>
Run Code Online (Sandbox Code Playgroud)
它不能在生产模式下工作(也就是说,我无法显示徽标图像),因为我认为资产管道使用指纹识别技术,而在收到的电子邮件中却没有.检查电子邮件中的HTML徽标元素我得到如下内容:
<img src="http://www.mysitecom/images/logo.png"> # without Fingerprinting
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
在我的production.rb文件中,我有以下注释掉的代码:
# Enable serving of images, stylesheets, and javascripts from an asset server
# config.action_controller.asset_host = "http://assets.example.com"
Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline
我们有一个rails应用程序,我最近从Rails 3.0更新到Rails 3.2.这个应用服务多个客户.要为每个客户端自定义它,我们有目录app/themes.在有子模块.每个子模块包含类的东西locales/en.yml,views/layouts,views/controller_name等我们使用prepend_view_path添加主题的意见,并I18n.load_path在语言环境中添加.我们正在考虑使用资产管道,以便我们可以将所有客户端材料混合在公共目录之外,并将其保存在每个主题中.
有没有办法可以动态告诉rails加载我想要的主题/主题名称/资源文件夹?我们使用设置逻辑来设置哪个主题是活动的.因此,如果我将主题设置为"google",ApplicationController则会从路径中加载文件:
app/themes/google/locales/*.yml
app/themes/google/views
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是拥有清单文件,
app/themes/google/assets/stylesheets/application.css
Run Code Online (Sandbox Code Playgroud)
布局很容易访问,就像在app/views/layouts文件中一样:
= stylesheet_link_tag "application"
Run Code Online (Sandbox Code Playgroud)
有没有办法可以做到这一点?或者我们是否需要手动将资产移动到实际资产目录中?
我已经部署了这个应用程序(rails 3.2.11)一百万次了,我没有搞乱任何设置,但现在我受到了欢迎:

为什么这个发生了?我的应用程序.rb包括config.assets.enabled = true- 从来没有任何问题.
事实上,在端口3000上本地运行它似乎没有任何问题.
在今天早上部署到heroku后,似乎它没有加载内部/ assets /
有趣的是,在复制文件后尝试只创建一个新应用程序,会git commit产生您期望的所有内容以及我认为可能与之相关的长列表:

编辑:有趣的是,一些资产已加载,如徽标和背景,但其余部分,您可以看到返回404.
我的Rails应用程序中的几个资产出现以下错误.
ActionController::RoutingError (No route matches [GET] "/assets/jquery-1.10.2.min.map")
Run Code Online (Sandbox Code Playgroud)
任何人都可以了解".map"来自哪里以及为什么?提前致谢.
我在我的Rails 4应用程序中使用ckeditor gem .在本地和我的stoku heroku环境中,一切都很好用,但是在推动生产环境时我遇到了这个错误:
GET http://myapp.herokuapp.com/assets/ckeditor/contents.css 404 (Not Found)
GET http://myapp.herokuapp.com/assets/ckeditor/skins/moono/icons.png 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
编辑器显示良好,但缺少所有图标.
我按照自述文件(https://github.com/galetahub/ckeditor),但我可能错过了一些东西.
这是我的步骤:
1)宝石安装,生成等......
2)config.autoload_paths += %W(#{config.root}/app/models/ckeditor)在application.js中
3)mount Ckeditor::Engine => "/ckeditor"在routes.rb(我不明白为什么)
4)在application.js中
//= require ckeditor/override
//= require ckeditor/init
Run Code Online (Sandbox Code Playgroud)
这究竟是做什么的,为什么需要覆盖呢?(这些文件位于何处,因为没有/app/assets,但/lib/assets两者都没有/vendor/assets)
Heroku是只读的,因此我不能像教程中所解释的那样运行rake任务.我认为这就是我在生产模式中得到错误的原因.
有人遇到过同样的问题吗?我浏览了所有stackoverflow问题,但到目前为止还没有解决我的问题.
更新:
我发现让它工作的唯一方法是实时编译:config.assets.compile = true
但我不想在生产中使用它,我不明白它为什么会起作用.
heroku production-environment ckeditor asset-pipeline ruby-on-rails-4
我们有一个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) 因此,我希望避免使用ERB处理JavaScript文件,这样我就可以获得适当的资产路径,例如图像.
目前,这似乎是流行的方法:
var myImage = "<%= asset_path('my_image') %>";
当然,这需要将文件名更改为"*.erb",以便进行处理.
我更倾向于将ERB丑陋与我项目中的一个点隔离,制作一个清单文件(例如"assets.js.erb")来计算并提供我需要的所有资产路径.
我当然可以通过逐案解决来做到这一点:
ASSETS =
"my_image": "<%= asset_path('my_image') %>"
window.assetPath = (path) -> ASSETS[path]
Run Code Online (Sandbox Code Playgroud)
但是,我真的宁愿只写一些ERB来递归我的所有内容asset_paths.asset_environment.paths并为我构建一个大的对象文字清单,这样我真正的应用程序JavaScript就可以自信地调用:
var myImage = assetPath('my_image');
关于(1)的任何想法是否有更容易的方法来做我错过的,或者(2)我如何完成对所有潜在有效参数的搜索asset_path?
在第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?
asset-pipeline ×10
heroku ×2
ruby ×2
capistrano ×1
ckeditor ×1
compass-sass ×1
deployment ×1
erb ×1
sass ×1
sprockets ×1