标签: asset-pipeline

需要来自资产路径的子目录的资产文件

我正在尝试将我的应用程序升级到Rails 3.1,并且我有很多自定义Javascript文件,我正在尝试迁移到新的资产管道.

我当前(即3.1之前的)目录结构具有类似于:

public/
    foo/
        model.js
        controller.js
        etc...
Run Code Online (Sandbox Code Playgroud)

所以,我正在尝试将它们移到lib/assets/javascripts并保持foo /子目录完整(而不是制作foo_model.js,foo_controller.js等).

在我的application.js中,我试图这样做:

//= require foo/model
Run Code Online (Sandbox Code Playgroud)

//= require 'foo/model'
Run Code Online (Sandbox Code Playgroud)

但这些都行不通.Rails总是给我一个错误页面并说:

couldn't find file 'foo/model.js'
Run Code Online (Sandbox Code Playgroud)

如果它们不在子目录中,我确实测试了正确包含的东西,所以我知道这不仅仅是我的lib/assets目录不在include路径中.所以我想我只是想知道是否有办法做到这一点,或者我应该只是扁平化目录并使用foo_model.js等?

ruby-on-rails-3.1 sprockets asset-pipeline

5
推荐指数
1
解决办法
5230
查看次数

在生产环境中使用html5-rails gem时出现AssetNotPrecompiledError

我已经在rails 3.1上开发了html5-railscompass-html5但是当我在生产模式下运行我的应用程序并尝试访问我的主页时,我得到以下内容:

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Home#index

polyfills.js isn't precompiled
Run Code Online (Sandbox Code Playgroud)

问题是localhost:8080:/assets/polyfills.js确实显示.我怀疑我的方法有问题:

重现步骤:

1使用家庭控制器创建新的rails应用程序,索引操作并设置根路由并删除public/index.htmlviews/layouts/application.html.erb

2在Gemfile中添加以下内容

gem 'rails', '~> 3.1.0'
gem 'unicorn'
group :assets do
  gem 'compass', "~> 0.12.alpha.0"
  gem 'sass-rails', "~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
  gem 'compass-html5', :git => 'https://github.com/sporkd/compass-html5.git'
  gem 'html5-rails', :git => "https://github.com/sporkd/html5-rails.git"
end
Run Code Online (Sandbox Code Playgroud)

3运行rails g html5:install以创建/config/compass.rb文件

4创建包含以下代码的/config/initializers/sass.rb:

Rails.configuration.sass.tap do |config|
  config.load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
end
Run Code Online (Sandbox Code Playgroud)

5运行RAILS_ENV=production bundle exec rake …

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

5
推荐指数
1
解决办法
1931
查看次数

wicked_pdf:ActionView :: Template :: Error(找不到文件“ twitter / bootstrap”

我们有一些PDF生成代码可以在开发环境中正常工作,但是Rails在尝试在生产环境中渲染时显示错误:

***************WICKED***************
  Rendered invoices/show.pdf.haml within layouts/invoices_pdf.pdf (8.8ms)
Completed 500 Internal Server Error in 73ms

ActionView::Template::Error (couldn't find file 'twitter/bootstrap'
Run Code Online (Sandbox Code Playgroud)

尝试将application.css资产包括在以下内容中失败:

!!!
%html
  %head
    %meta{"http-equiv"=>"content-type", :content=>"text/html; charset=utf-8"}
    = wicked_pdf_stylesheet_link_tag "application"

  %body
    .container
      = yield
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails sprockets asset-pipeline wicked-pdf

5
推荐指数
1
解决办法
1954
查看次数

Rails config.static_cache_control如何从缓存中排除文件

我正在为我的所有资产设置长期过期标题.但是,在我的公共目录中有一些静态HTML文件(对于Jekyll博客),这些文件正在缓存,并且在更新时没有缓存到位.它实际上似乎是我的主index.html文件,位于app/public/blog,不断被捕获在缓存中.

是否像更改配置中的"公共"一样简单?

config.static_cache_control = "public, max-age=604800"

caching ruby-on-rails asset-pipeline

5
推荐指数
1
解决办法
1823
查看次数

在rails引擎中找不到jquery-ui(jquery-rails gem)

我正在使用jquery-rails gem.在app/assets/javascripts/my_engine/application.js.erb中的rails(不可安装)引擎中:

//= require jquery
//= require jquery_ujs
//= require jquery-ui.min
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Sprockets::FileNotFound: couldn't find file 'jquery-ui.min'\n  (in /home/me/rails/my_engine/app/assets/javascripts/my_engine/application.js.erb
Run Code Online (Sandbox Code Playgroud)

同样的设置在容器应用程序中工作正常.如何清单可以找到jquery和jquery_ujs而不是jquery-ui.min?

我在我的容器应用程序的Gemfile中,在引擎的gemspec和引擎的Gemfile中运行了jquery-rails gem并运行了bundle install.

jquery-ui ruby-on-rails asset-pipeline

5
推荐指数
1
解决办法
3260
查看次数

为什么Google Bot抓取不存在的CSS文件?

Google Bot Crawler一直在尝试抓取生产中我网站上不存在的CSS文件.

它要求:

http://www.mywebsite.com/assets/index-d45678283d4ab9905c3538184826e599.css
Run Code Online (Sandbox Code Playgroud)

生产中不存在这个确切的文件名(生产中的文件名略有不同).

但是,它请求的CSS文件确实存在于开发中:

http://localhost:3000/assets/index-d45678283d4ab9905c3538184826e599.css
Run Code Online (Sandbox Code Playgroud)

我不确定为什么要求这个文件.

在部署到生产之前,我使用Capistrano(加载"deploy/assets")来预编译我的资产.

现在,我只是在robots.txt中阻止此文件,但它在每次部署后请求的css文件都会更改.

为什么GoogleBot要抓取生产网站中不存在的此文件?我怎么阻止它?

googlebot ruby-on-rails web-crawler asset-pipeline

5
推荐指数
1
解决办法
792
查看次数

Capistrano部署后Rails资产丢失

我正在构建VPS,它通过Capistrano部署,数据库连接等,但页面没有可用的资源 - 它只是基本的html.

资产似乎已编译,并存在于共享目录中.

从页面html:

<link href="/assets/application-a1b5d69aeaff709fd3dce163c559b38b.css" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/application-0ebd07089629f8c6880dddfb688d525d.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

资产文件似乎存在于共享目录中:

assay@assaypipeline:~/apps/assay/shared/assets$ ls application-  a1b5d69aeaff709fd3dce163c559b38b.css
application-a1b5d69aeaff709fd3dce163c559b38b.css
Run Code Online (Sandbox Code Playgroud)

当我查看,源,然后单击指向资产路径的超链接时,我从Nginx中找不到404.

感谢Martin M(接受了答复)的帮助.我从服务器上的〜/ apps /(app name)/ current目录中采取的步骤.

$ bundle install
$ RAILS_ENV=production bundle exec rake assets:precompile
$ sudo service nginx restart
Run Code Online (Sandbox Code Playgroud)

显然,将它包含在Capistrano配方中会更好.

*编辑 - Capfile*

load 'deploy'
load 'deploy/assets'
load 'config/deploy'
Run Code Online (Sandbox Code Playgroud)

capistrano ruby-on-rails nginx asset-pipeline

5
推荐指数
1
解决办法
6940
查看次数

Rails 4资产管道抛出"只允许生成一代JSON对象或数组"

这可能与coffeescript和Rails资产管道的JSON错误有关

我正在使用Rails 4中的应用程序.我有一个名为tasks.js.coffee的资产.直到最近一切都很好.今天早上我想做一个更改,Rails抛出"只允许生成一代JSON对象或数组".

似乎任何更改都足以抛出错误,甚至删除空行或更改字符串中的单个字符.当我还原更改时,它再次起作用.

我假设昨天当我进行捆绑更新时,一些宝石得到了更新,导致了这个问题.

有没有人看到它?有谁知道导致这个问题的原因,以及如何解决这个问题?

ruby-on-rails coffeescript asset-pipeline

5
推荐指数
1
解决办法
2575
查看次数

在开发中的Rails资产管道中使用@import时如何查看单个CSS

我打电话给几个样式表,application.css.scss其中包含require指令和@import

当前

*= require font
*= require font-awesome
*= require twitter/bootstrap
@import "bourbon";
@import "app_css_that_uses_bourbon_mixins
Run Code Online (Sandbox Code Playgroud)

为了使用bourbon gem(来自Thoughtbot),我必须使用@import语法。但是,当我开始使用@import时,我将失去在开发模式下查看单个CSS文件的功能。但是,当我使用时*= require directive,我能够在开发模式下单独查看css文件。我认为此属性(用于查看单个,非串联文件的属性)源自“ config.assets.debug = true”,这是我应用程序中的设置。

由于有多个CSS,链轮将它们链接时,我很难调试它们,因此我希望能够1.一致使用@import语法2.能够查看单个CSS文件以在开发模式下进行调试。

@import "bourbon";
@import "font-awesome";
@import "twitter/bootstrap";
@import "app_css_that_uses_bourbon_mixins
.....
Run Code Online (Sandbox Code Playgroud)

感谢任何帮助。

css ruby-on-rails sass sprockets asset-pipeline

5
推荐指数
1
解决办法
175
查看次数

资产管道路由助手解析为错误的URL或路径

除了image_tag某些原因外,我的所有资产助手都遇到了麻烦.它们都在产生错误的路径.我使用的是Rails 4.0.0和Ruby 2.0.0.我的照片在/app/assets/images

例如

asset_url('this.png')    # -> /this.png
asset_path('this.png')   # -> /this.png
image_url('this.png')    # -> /images/this.png
image_path('this.png')   # -> /images/this.png
image-url('this.png')    # -> /images/this.png
asset-url('this.png')    # -> /this.png
image_tag('this.png')    # -> <img ... src="/assets/this.png" /> <- only correct one
Run Code Online (Sandbox Code Playgroud)

我总是得到错误的URL ...我需要/assets/this.png它似乎只是由生成image_tag

这发生在.haml,.scss,.erb的一致好评.

我无法找到解决这个问题的方法......之前有人见过这个并得到答案吗?

ruby-on-rails asset-pipeline

5
推荐指数
1
解决办法
1510
查看次数