标签: asset-pipeline

Rails 3.1:在邮件程序视图文件中显示图像时出现问题

我正在使用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

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

将文件夹添加到资产管道路径?

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

有没有办法可以做到这一点?或者我们是否需要手动将资产移动到实际资产目录中?

ruby-on-rails asset-pipeline

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

在推送到heroku之后,我的大多数资产突然返回404

我已经部署了这个应用程序(rails 3.2.11)一百万次了,我没有搞乱任何设置,但现在我受到了欢迎:

在此输入图像描述

为什么这个发生了?我的应用程序.rb包括config.assets.enabled = true- 从来没有任何问题.

事实上,在端口3000上本地运行它似乎没有任何问题.

在今天早上部署到heroku后,似乎它没有加载内部/ assets /

有趣的是,在复制文件后尝试只创建一个新应用程序,会git commit产生您期望的所有内容以及我认为可能与之相关的长列表:

在此输入图像描述

编辑:有趣的是,一些资产已加载,如徽标和背景,但其余部分,您可以看到返回404.

ruby deployment ruby-on-rails heroku asset-pipeline

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

Rails资产 - 404扩展名为.map

我的Rails应用程序中的几个资产出现以下错误.

ActionController::RoutingError (No route matches [GET] "/assets/jquery-1.10.2.min.map")
Run Code Online (Sandbox Code Playgroud)

任何人都可以了解".map"来自哪里以及为什么?提前致谢.

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

18
推荐指数
1
解决办法
5861
查看次数

使用Heroku在生产Rails应用程序上运行ckeditor的问题

我在我的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

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

使用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
查看次数

通过构建所有asset_path值来避免使用*.js.erb文件

因此,我希望避免使用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

ruby-on-rails erb sprockets asset-pipeline

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

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万
查看次数