资产对我的Web视图工作正常,但由于某种原因,我的Mailer不使用资产管道.我想在我的邮件程序视图中使用image_tag:
=link_to image_tag("logo.png")
Run Code Online (Sandbox Code Playgroud)
然而,这呈现为
<img alt="logo" src="http://mydomain.com/assets/logo.png">
Run Code Online (Sandbox Code Playgroud)
代替
<img alt="logo" src="http://mydomain.com/assets/logo-xxxxxxxxx...png">
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?
我的设置是:
config.action_mailer.default_url_options = { :host => config.domain }
config.action_mailer.asset_host = "http://" + config.domain
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个rails 3.1应用程序,允许用户上传图片.这些图片是应该存储为资产(在应用程序/资产中),因此受到链接开销(缓存,指纹识别等)的影响?或者我应该将它们保存在公共/图像中并将它们存储在资产管道之外?
ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline
我有一个现有的Rails应用程序我正在从Rails 3.0升级到Rails 3.1.一切进展顺利,但在转向生产时,我的样式表正在破碎,显然是由于资产编制.
我想在生产中禁用资产编译,直到我可以解决样式表冲突,但我抛出的配置开关似乎没有工作.
production.rb
# Don't fallback to assets pipeline
config.assets.compile = false
# Do not compress assets
config.assets.compress = false
# Generate digests for assets URLs
config.assets.digest = false
Run Code Online (Sandbox Code Playgroud)
重新启动Passenger后,application.css是唯一提供的样式表,包含内联内容.在开发环境中我有:
development.rb
# Do not compress assets
config.assets.compress = false
# Expands the lines which load the assets
config.assets.debug = true
Run Code Online (Sandbox Code Playgroud)
...导致加载了几个样式表,而不仅仅是application.css,以及应用程序中的工作样式.
application.rb中
=stylesheet_link_tag 'application'
=javascript_include_tag 'application'
Run Code Online (Sandbox Code Playgroud)
application.css
*= require flutie
*= require_self
*= require jquery-ui-1.8.14.custom.css
*= require demo_table
Run Code Online (Sandbox Code Playgroud)
所有资产都在app/assets中设置
我收到以下错误:
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Photos#edit
Showing .../app/views/photos/_form.html.haml where line #49 raised:
taxonomy/focus-building.jpg isn't precompiled
Extracted source (around line #49):
46: = focus.code
47: .tooltip
48: %span.name= focus.name
49: = image_tag("taxonomy/focus-#{focus.code.downcase.dehumanize}.jpg")
50: / Help Overlay
51: .help
52: %a.overlay{:href=>"#", :rel=>'#help-focus'} Learn more about focus
Run Code Online (Sandbox Code Playgroud)
此图像文件位于app/assets/images/taxonomy/focus-building.jpg.我已经运行了rake assets:precompile RAILS_ENV=production,但据我所知,图像没有被复制到public/assets目录中.
奇怪的是,SCSS中引用的所有资产都image-url()可以正常使用.为什么这个图像报告在被引用时没有被预编译image_tag?
由于特定的设置,我想将编译的样式表拆分为两个文件.这是因为可以解析CSS的Java应用程序需要(一部分)CSS,但它有点错误并且无法处理某些css-(hack)-syntax.因为我无法修改这个Java应用程序,所以我想只提供它需要的CSS,并且我可以确保它是正确的.
因此,通常资产管道只生成一个'/assets/application-[..].css'文件.它会让它根据我做的文件选择生成'/assets/custom-[..].css'.这仍然可以预先编译.
有没有办法做到这一点?虽然我明白这不是理想的设置..
尝试使用Capistrano 3.0.1进行部署时出现以下错误:
cap aborted!
Don't know how to build task 'starting'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/dsl/task_enhancements.rb:5:in `before'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/tasks/assets.rake:9:in `block in <top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/tasks/assets.rake:8:in `<top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/rails/assets.rb:1:in `load'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/rails/assets.rb:1:in `<top (required)>'
/Users/user/Documents/rails/shop/Capfile:18:in `require'
/Users/user/Documents/rails/shop/Capfile:18:in `<top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/application.rb:22:in `load_rakefile'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/application.rb:12:in `run'
/Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/bin/cap:3:in `<top (required)>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/cap:23:in `load'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/cap:23:in `<main>'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval'
/Users/user/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
当我取消注释需要行以加载资产并在Capfile中执行迁移时,这似乎已经开始了:
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Includes tasks from other gems included in your Gemfile
#
# require 'capistrano/rvm'
# require …Run Code Online (Sandbox Code Playgroud) ruby capistrano ruby-on-rails ruby-on-rails-3 asset-pipeline
我正在使用内置的Webrick服务器在我的localhost:3000上的生产环境中测试我的Rails 4应用程序.当我运行RAILS_ENV=production bundle exec rake assets:precompile资产时,公共重建资产并重建清单,但页面仍然使用以前的资产名称.
重新启动rails服务器会显示新资产.是否有一种不那么极端的方法来实现这一点,当我将其移植到运行Phusion Passenger的生产服务器时,这将如何表现.我真的不想重启Apache以使我的资产处于正常状态.
这是我到目前为止的路径:
assets
>fonts
>images
>stylesheets
>javascripts
>videos
Run Code Online (Sandbox Code Playgroud)
我想在视频文件夹下播放视频,但我似乎无法让它们显示出来.我当前的assets.rb初始化程序如下:
Rails.application.config.assets.precompile += %w( layout-home.css layout-error.css layout-static-page.css layout-brand.css )
Rails.application.config.assets.precompile += %w( layout-home.js layout-static-page.js layout-brand.js )
Rails.application.config.assets.precompile += [ Dir.glob("#{Rails.root}/app/assets/videos/**/") ]
Run Code Online (Sandbox Code Playgroud)
关于如何调整这个的任何想法?无论我如何调整最后一行,我都无法让他们进入.
我想知道如何在IntelliJ IDEA中为下面的代码块设置语言注入.
我希望将其中的内容<asset:script/>视为JavaScript:
<body>
<asset:script type="text/javascript">
console.debug("javascript here");
</asset:script>
</body>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我正在使用Rails 5.1.1,对于我们想要的rspec功能测试,我们希望在运行所有功能测试之前使用预编译资产.(主要原因是因为capybara-webkit不支持javascript es6功能)
使用RAILS_ENV=test rake assets:precompilecapybara-webkit 成功预编译的资产似乎不使用预编译资产.
config/environment/test.rb看起来像这样
config.assets.prefix = "/assets_test"
config.assets.compile = true
config.serve_static_assets = true
config.assets.js_compressor = Uglifier.new(
harmony: true #es6 support
)
Run Code Online (Sandbox Code Playgroud)
我需要添加什么来测试才能使用预编译资产?