自启用资产管道以来,我的开发日志中包含以下内容:
Started GET "/assets/icons/close_32.png" for 127.0.0.1 at 2011-09-19 11:05:39 +0100
Started GET "/assets/vendor/colorbox/controls.png" for 127.0.0.1 at 2011-09-19 11:05:39 +0100
Served asset /icons/close_32.png - 304 Not Modified (0ms)
Served asset /vendor/colorbox/controls.png - 304 Not Modified (0ms)
Run Code Online (Sandbox Code Playgroud)
这意味着在日志中获取实际请求需要大量滚动.我很少(如果有的话)关心我的日志中的这些资产请求,那么有没有办法禁用资产请求的日志记录?
Sprockets::FileNotFound in Home#index
Showing /home/user1/rorblog/app/views/layouts/application.html.erb where line #6 raised:
couldn't find file 'jquery'
(in /home/user1/rorblog/app/assets/javascripts/application.js:7)
Extracted source (around line #6):
3: <head>
4: <title>Rorblog</title>
5: <%= stylesheet_link_tag "application" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: </head>
9: <body>
Run Code Online (Sandbox Code Playgroud)
但看起来所有文件都在那里.
application.html.erb =>
<!DOCTYPE html>
<html>
<head>
<title>Rorblog</title>
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
<body>
<div id="container">
<div id="header">
<ul class="hmenu">
<li>
<%= link_to('Home', home_index_path ) %>
</li>
<% if user_signed_in? …Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails ruby-on-rails-3.1 sprockets asset-pipeline
我目前正在使用Rails 3.1.我只需要使用一个css文件,但问题是当我添加时
<link href="http://mydomain.net/assets/some.css"></link>
Run Code Online (Sandbox Code Playgroud)
它不存在.我需要从该特定的css文件中获取css文件,并且不应该加载其他css文件.
我如何在Rails 3.1中做到这一点?
更新:
将其添加到production.rb:
config.assets.precompile += ['some.css']
Run Code Online (Sandbox Code Playgroud)
导致以下错误:
** [out :: domain.net] rake aborted!
** [out :: domain.net] stack level too deep
** [out :: domain.net] (in /home/deployer/apps/domain/releases/20120410204601/app/assets/stylesheets/some.css.scss)
** [out :: domain.net]
** [out :: domain.net] Tasks: TOP => assets:precompile:primary
** [out :: domain.net] (See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
更新#2:
some.css的文件名实际上是some.css.scss.
更新#3:
我刚刚发现了这个问题,它是由以下原因引起的:
我有一个使用redactor(一个所见即所得编辑器)的应用程序,它在本地完美运行,当我上传它时也可以工作,除了配置文件,它位于子文件夹中,当推送到Heroku时做任何事情.我试过预编译,使用:
RAILS_ENV=production bundle exec rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
和
bundle exec rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
我有config.assets.enabled = false
无法在Heroku上运行的config.js文件作为redactor-rails/config包含在application.js中
可能是什么问题?
使用deploy.rb仅在更改时预编译rails资产,此任务总是跳过我的资产的编译:(
namespace :assets do
task :precompile, :roles => :web, :except => {:no_release => true} do
from = source.next_revision(current_revision)
if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
else
logger.info "Skipping asset pre-compilation because there were no asset changes"
end
end
end
Run Code Online (Sandbox Code Playgroud)
什么可能导致这个完整的任务没有编译?它总是认为没有资产变化并抛出该消息.
我也从未真正理解任务,例如source.log.local下面的内容是什么?
source.local.log
Run Code Online (Sandbox Code Playgroud)
任何人都可以澄清任务命令的作用,并指出为什么它从未看到任何资产变化?谢谢
deployment capistrano precompile ruby-on-rails-3 asset-pipeline
我正在使用stylesheet_link_tag和资产管道,但我得到了这个:
<link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
我的生产.rb
config.serve_static_assets = false
config.assets.compress = true
Run Code Online (Sandbox Code Playgroud)
我假设它是设置或简单的东西..
我最近改用了资产管道.一切都运行良好,我可以预编译生产没有问题.
我遇到的麻烦是在我的开发环境中,我希望我做的更改不需要预编译即可生效.我找不到关于如何在本地立即查看我的最新CSS更改的明确说明.作为一个例子,除了我的application.css.scss'@ import句之外,我应该使用这样的东西吗?
//= depends_on reset
//= depends_on typography
@import "reset.css.scss"
@import "typography.css.scss"
Run Code Online (Sandbox Code Playgroud)
任何指针都将非常感激.
所以我刚升级到FontAwesome 4.0.此更改的一部分是引用图标的方式.
你不能再这样做了:<i class="icon-beer"></i>.
现在......你不得不更换icon同fa-,所以上面现在看起来是这样的:
<i class="fa fa-beer"></i>
因此,我决定用icon-我的项目替换所有引用fa fa-.
其中包括缓存文件,转储文件以及所有样式表,视图等.
现在......当我尝试加载任何页面时,我收到此错误:
ArgumentError at /
dump format error for symbol(0x69)
Run Code Online (Sandbox Code Playgroud)
日志看起来像这样:
Completed 500 Internal Server Error in 1060ms
ArgumentError - dump format error for symbol(0x69):
activesupport (3.2.14) lib/active_support/cache.rb:587:in `value'
activesupport (3.2.14) lib/active_support/cache.rb:324:in `block in read'
activesupport (3.2.14) lib/active_support/cache.rb:520:in `instrument'
activesupport (3.2.14) lib/active_support/cache.rb:315:in `read'
sprockets (2.2.2) lib/sprockets/caching.rb:70:in `cache_get'
sprockets (2.2.2) lib/sprockets/caching.rb:45:in `cache_get_hash'
sprockets (2.2.2) lib/sprockets/caching.rb:15:in `cache_asset'
sprockets (2.2.2) lib/sprockets/index.rb:92:in `build_asset'
sprockets …Run Code Online (Sandbox Code Playgroud) 我想在rails应用程序中运行资产预编译任务,因为我有许多依赖项将更改代码,在这种情况下,无论何时更改我都需要运行脚本,因为我无法让服务器访问它们所以我提供从他们自己的GUI可以运行脚本,因此,我已经构建了UI来运行任务与一些参数,如
system("Template='#{params[:template]}' Theme='#{params[:theme]}' rake assets:precompile)
Run Code Online (Sandbox Code Playgroud)
我从UI获取了两个值(params [:template],params [:theme]).我想在另一个路径(站点路径)中运行此任务的另一个意思是管理端UI是那个任务应该在Site目录中执行,
if(params[:theme_script] == "true")
template=Template.where(:name => params[:template]).first
if template
theme = template.themes.where(:name => params[:theme]).first
if theme
# Dir.chdir "#{THEMEPATH}"do
# `Template="#{template.name}" Theme="#{theme.name}" rake assets:precompile`
# end
# sleep 10
# system("#{Rails.root.to_s}/lib/shell_script.sh")
# RunRake.run_rake(template.name,theme.name)
# Dir.chdir "#{THEMEPATH}"do
# Rake::Task['assets:precompile'].invoke
# end
ENV["Template"] = template.name
ENV["Theme"] = theme.name
precompile_task = "bundle exec rake assets:precompile --trace 2>&1"
output = Dir.chdir(THEMEPATH) { %x[ #{precompile_task} ] }
flash[:notice] = "Asset created successfully"
else
flash[:notice] = "U have enter …Run Code Online (Sandbox Code Playgroud) ruby ruby-on-rails rake-task ruby-on-rails-3.1 asset-pipeline
我正在使用Capistrano部署我的Rails应用程序,除非我将ssh放入服务器并RAILS_ENV=development bundle exec rake assets:precompile手动运行,否则似乎不会对资产进行编译。
我已经尝试按照capistrano / rails github页面上的说明进行操作,但是不确定是否错过了一些内容。
运行cap production deploy成功完成。但是我不知道如何检查assets:precompile任务是否实际运行。运行cap production deploy:assets:precompile也成功完成,但是服务器上没有明显变化。
版本号
Server version: Apache/2.4.7 (Ubuntu)
Phusion Passenger 5.0.22
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
Rails 4.2.5
capistrano (3.1.0)
capistrano-bundler (1.1.4)
capistrano-rails (1.1.6)
capistrano-rbenv (2.0.4)
Run Code Online (Sandbox Code Playgroud)
Capfile
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rbenv'
require 'capistrano/rails/assets'
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
Run Code Online (Sandbox Code Playgroud)
config / deploy.rb
set :application, "website"
set :repo_url, "git@bitbucket.org:company/website.git"
set :deploy_to, "/var/www/#{fetch(:application)}"
set :user, "webmaster"
set :rbenv_path, …Run Code Online (Sandbox Code Playgroud) capistrano ruby-on-rails asset-pipeline ruby-on-rails-4 capistrano3
asset-pipeline ×10
capistrano ×2
ruby ×2
sprockets ×2
assets ×1
caching ×1
capistrano3 ×1
deployment ×1
heroku ×1
logging ×1
precompile ×1
rake-task ×1
sass ×1