标签: asset-pipeline

config.assets.version在Rails中做了什么?

我在文档中找不到这个问题的明确答案.许多参考文献只是说"更改版本会使资产无效".那么,指纹机制是不是一样的,它根据文件内容和名称生成哈希标签?有谁知道究竟config.assets.version是为了什么?

ruby-on-rails-3 asset-pipeline

10
推荐指数
1
解决办法
4304
查看次数

Rails 3.1资产管道 - 从公共/资产中丢失文件 - 为什么这不是默认值?

在今天下午将我升级的Rails 2.3.x - > 3.1(rc4)应用程序部署到我们的测试环境后,我们所有的样式表和JavaScript文件都返回了404错误.我们已经将rake资产:预编译任务添加到我们的部署后脚本中,并且花了一些时间来确定assets文件夹为什么没有我们预期的预编译文件.

最后,文件没有被编译,因为默认情况下只处理application.css和application.js(+非JS/CSS文件).

我们需要更改以下配置值,如下所示:

config.assets.precompile += %w( *.js *.css )
Run Code Online (Sandbox Code Playgroud)

问题:为什么这不是默认值?

我原本预计,任何不必作为清单文件处理的东西都会被复制到公共/资产中.我在资产管道上阅读的大部分内容基本上是"将资产放在app/assets中,配置清单文件,它应该正常工作".由于资产:预编译任务没有吐出任何有关它正在做什么的信息,因此需要一段时间才能确定它只是没有查看我们认为会存在的文件.

有什么理由说这对于预编译配置来说不是一个好的价值吗?

谢谢!

assets ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline

9
推荐指数
1
解决办法
6408
查看次数

Rails 3.1资产在生产中没有指纹

刚刚开始适应rails 3.1,我开始编写coffeescript和sass,一切都在开发中运行良好.当我在生产中运行服务器时,我只得到:

  <link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
  <script src="/javascripts/application.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

在页面的源代码中,没有生成哈希码,并且两个资产都有路由错误:

Routing Error
No route matches [GET] "/stylesheets/application.css"
Run Code Online (Sandbox Code Playgroud)

这是什么原因?我忘记做某事吗?

环境/ production.rb中的设置:

# Settings specified here will take precedence over those in config/application.rb

  # Code is not reloaded between requests
  config.cache_classes = true

  # Full error reports are disabled and caching is turned on
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = false

  # Compress JavaScripts and …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3.1 asset-pipeline

9
推荐指数
1
解决办法
3674
查看次数

如何在邮件中使用资产管道获取样式表的绝对路径?

我的Mailer模板中的视图助手为我提供了样式表和图像的相对URL.当然,如果我在Gmail中查看电子邮件,这将无效.

apps/views/layouts/mailer.html.erb

<%= stylesheet_link_tag "application" %>
...
<%= link_to(image_tag("logo.png"), "http://mysite.com") %>
Run Code Online (Sandbox Code Playgroud)

呈现为:

<link href="/assets/application-c90478153616a4165babd8cc6f4a28de.css" media="screen" rel="stylesheet" type="text/css" />
...
<a href="http://mysite.com"><img alt="Logo" src="/assets/logo-d3adbf8d0a7f7b6473e2130838635fed.png" /></a>
Run Code Online (Sandbox Code Playgroud)

我如何让Rails给我绝对链接呢?我在Rails 3.1上,资产管道生效.

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

9
推荐指数
2
解决办法
9548
查看次数

Rails 3.1资产管道供应商/资产文件夹组织

我正在使用我的Rails 3.1站点中的jQuery Tools可滚动库,其中各种资源放在vendor/assets文件夹中,它运行良好.

我的问题是关于在供应商/资产下组织各种文件的最佳方法.组织供应商/资产子文件夹的推荐方法是什么?目前我有这样的结构:

vendor/assets/
 |-- images/
 |    |-- scrollable/
 |          <various button/gradient images>
 |-- javascripts/
 |    |-- scrollable/
 |          jquery.tools.min.js
 |-- stylesheets/
 |    |-- scrollable/
 |          scrollable-buttons.css
 |          scrollable-horizontal.css
Run Code Online (Sandbox Code Playgroud)

这是一个相当不干的做法.我觉得所有'可滚动'项目都应该在一个文件夹下.

在不必操纵资产管道加载路径的情况下,建议的方法是什么?

谢谢!

vendor ruby-on-rails-3.1 asset-pipeline

9
推荐指数
1
解决办法
3225
查看次数

为什么Rake任务增强在我的本地环境和部署到Heroku Cedar之间有所不同?

我在lib/tasks/foo.rake中有这个:

Rake::Task["assets:precompile"].enhance do
  print ">>>>>>>> hello from precompile"
end
Rake::Task["assets:precompile:nondigest"].enhance do
  print ">>>>>>>> hello from precompile:nondigest"
end
Run Code Online (Sandbox Code Playgroud)

当我在rake assets:precompile本地运行时,两个消息都被打印出来.

当我推送到heroku时,只打印非自动消息.但是,根据buildpack,push正在执行与本地完全相同的命令.

为什么基础资产的增强:预编译案例在heroku上不起作用但在本地工作?

ruby ruby-on-rails heroku asset-pipeline

9
推荐指数
1
解决办法
938
查看次数

如何让Rails 3.1在开发模式下连接资产?

我无法让资产管道在开发中连接(但不压缩!)资产.我的想法是,对于每个开发页面加载,我可以停止为微小的css/js文件发出70多个请求,但仍然可以查看行号,这样我就可以找出问题所在.

config/environments/development.rb有这个,我解释rails指南意味着资产应该编译成一个文件,但不压缩:

config.assets.compress = false
config.assets.compile = true
config.assets.digest = false
config.assets.debug = false
Run Code Online (Sandbox Code Playgroud)

但没有骰子:资产仍然是单独提供的,而不是在application.js中连接.

任何帮助,将不胜感激!

ruby-on-rails asset-pipeline

9
推荐指数
1
解决办法
2855
查看次数

rake资产:在推送到Heroku期间预编译失败

我目前在我的Rails应用程序中使用asset_sync,并且我在我的Heroku应用程序中设置了环境变量.当我运行heroku配置时,我得到:

AWS_ACCESS_KEY_ID:     XXXXXXXXXXXXXXXXXX
AWS_SECRET_ACCESS_KEY: XXXXXXXXXXXXXXXXXX
FOG_DIRECTORY:         MY-BUCKET-NAME
FOG_PROVIDER:          AWS
etc...
Run Code Online (Sandbox Code Playgroud)

当我将我的应用程序推送到Heroku时,它会尝试运行rake资产:precompile并收到以下消息:

Preparing app for Rails asset pipeline
Running: rake assets:precompile
/usr/local/bin/ruby /tmp/build_2pa7aisux9av8/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
AssetSync: using /tmp/build_2pa7aisux9av8/config/initializers/asset_sync.rb
rake aborted!
Fog directory can't be blank, Aws access key can't be blank, Aws secret access key can't be blank
Run Code Online (Sandbox Code Playgroud)

但后来我跑了:

heroku run rake assets:precompile --app my-app-name
Run Code Online (Sandbox Code Playgroud)

...它处理所有内容并同步到S3就好了:

Running `rake assets:precompile` attached to terminal... up, run.1
/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=staging RAILS_GROUPS=assets
AssetSync: using /app/config/initializers/asset_sync.rb
/usr/local/bin/ruby /app/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=staging RAILS_GROUPS=assets
AssetSync: using /app/config/initializers/asset_sync.rb …
Run Code Online (Sandbox Code Playgroud)

heroku ruby-on-rails-3.1 asset-pipeline

9
推荐指数
2
解决办法
3711
查看次数

更改config.assets.version数字有什么作用?

更改config.assets.version数字有什么作用?

我知道资产到期(因为它写在评论中),但它在后台做了什么?

它会删除所有已编译的资产吗?或者是否需要该版本号并将其用于其他地方?

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

9
推荐指数
1
解决办法
915
查看次数

Rails 4和Leaflet:找不到资产/图像?

我遇到的问题确实不应该是问题.出于某种原因,我在app/assets/images中的图像不可访问.当我要求他们时,我只得到404.

./log/development.log:Started GET "/assets/images/marker-shadow.png" for 127.0.0.1 at 2013-07-20 22:02:38 -0400
./log/development.log:ActionController::RoutingError (No route matches [GET] "/assets/images/marker-shadow.png"):

mike@sleepycat:~/projects/myapp$ ls app/assets/images/
marker-icon-2x.png  marker-icon.png  marker-shadow.png
Run Code Online (Sandbox Code Playgroud)

这真的应该是一个简单的脑死亡修复...最多重启服务器.我已经重新启动了服务器,我已经检查了文件权限,以确保文件对它们具有合理的权限......当我加载页面时,我仍然得到404.

我在这里错过了什么?

使用Rails 4.

ruby-on-rails asset-pipeline leaflet

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