标签: asset-pipeline

在生产模式下运行瘦服务器不会加载我的资产

当我thin像这样加载:

thin start -e production
Run Code Online (Sandbox Code Playgroud)

并尝试访问我的一个页面,我在日志输出中得到这个:

cache: [GET /] miss
cache: [GET /assets/main-bd1ef4b153740fb69fd615304b87ad0d.css] miss
cache: [GET /assets/jqModal-8fa734bf4f58524b2799abd73ab7d34f.css] miss
cache: [GET /assets/jquery-544665ba1d5b4f793290421aafed85c9.js] miss
cache: [GET /assets/application-00b97aa2429046c0c43802f07b756b46.js] miss
Run Code Online (Sandbox Code Playgroud)

这些文件存在于我的assets目录下public.

我也运行这个命令:

RALS_ENV=production rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

我试过/public/assets/application.js在浏览器中访问该文件,如下所示:

http://localhost:3000/application.js
Run Code Online (Sandbox Code Playgroud)

这给了我一个404错误(即使该文件存在/public/assets但是当我在服务器处于开发模式时向文件发出请求时可以读取该文件.

有人有主意吗?

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

8
推荐指数
1
解决办法
5476
查看次数

渲染部分资产

我正在使用Ruby on Rails 3.1,我想知道如何在javascript资产中渲染部分内容.

我的目标是:

# in /app/assets/javascript/cart.js.coffee.erb
$('a.add_sth').click -> $('.random_container').append('<%= render partial: 'way/to/partial' %>')
Run Code Online (Sandbox Code Playgroud)

这会导致NoMethodError:

undefined method `render' for #<#<Class:0x007fc54584c6e8>:0x007fc5474cd470>
Run Code Online (Sandbox Code Playgroud)

如果我写,<%= 2+3 %>它工作正常,顺便说一句.

我认为问题是资产管道独立于默认的ActionView,这就是为什么render()在那里未知.无论如何,有没有办法让部分内容呈现?

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

7
推荐指数
2
解决办法
6707
查看次数

uglifier不能在rails中工作

config/application.rb
...
# Enable the asset pipeline
config.assets.enabled = true
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
config.assets.digest = true
config.assets.paths << "#{Rails.root}/vendor/assets/images" 
...


config/environment.rb
...
ENV['RAILS_ENV'] ||= 'production'
...

My gemfile
...
gem 'uglifier'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  #gem 'uglifier'
end
...

environment/production.rb
....
    config.active_support.deprecation …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3 asset-pipeline

7
推荐指数
2
解决办法
6126
查看次数

Rails 3.1不预编译CSS没有引用的图像?

我收到以下错误:

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

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

7
推荐指数
1
解决办法
1846
查看次数

Heroku没有预先编译我的资产来准备我的应用程序用于资产管道

使用Rails 3.1.1让我的资产管道设置与Heroku/Cedar一起使用时遇到了一些麻烦

我已推送我的应用程序并成功启动,但没有消息说"准备资产管道"并且没有提供静态资产.由于没有slug编译时间或运行时资产编译,因此无法找到JS,CSS或图像.

任何帮助将不胜感激.

他们描述了在此链接部署期间应该发生的事情,我将在下面总结:

使用Heroku Cedar上的Rails 3.1应用程序,当你git push heroku时,你的资产将通过使用rake任务包exec rake assets:precompile预先编译为部署过程的一部分.

heroku mongodb mongoid ruby-on-rails-3.1 asset-pipeline

7
推荐指数
1
解决办法
3269
查看次数

在javascript中嵌入erb代码以用于资产管道

在我的rails 3.1.3应用程序中,我想在我的javascript文件中插入一些ERB代码但是由于某种原因它没有被解析:

# app/assets/javascripts/application.js
//= require_tree ./shared

# app/assets/javascripts/shared/shared.js.erb
MM.loading = '<img src="<%= asset_path("icons/ajax-loader.gif") >">';
Run Code Online (Sandbox Code Playgroud)

获取如下所示/application.js:

MM.loading = '<img src=" asset_path("icons/ajax-loader.gif") >">';
Run Code Online (Sandbox Code Playgroud)

我在导轨指南中看不到任何额外的步骤 - 有什么我想念的吗?顺便说一下,我正在使用haml作为视图文件,并且还尝试了上面的内容.js.haml,包含在中#{...}.

javascript erb ruby-on-rails-3.1 asset-pipeline

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

资产管道编码问题(UTF-8与ASCII-8BIT)与外部gem

我正在尝试创建一个包装d3.js的gem,Source可以在https://github.com/iblue/d3-rails找到

所以当我在我的Gemfile中包含这个gem时

gem "d3-rails", :git => "git://github.com/iblue/d3-rails.git"
Run Code Online (Sandbox Code Playgroud)

当我在我的application.js中包含javascript时:

//=require d3
Run Code Online (Sandbox Code Playgroud)

然后我的资产编译失败,我编译的application.js只包含

throw Error("Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT")
Run Code Online (Sandbox Code Playgroud)

我正在使用Rails 3.1.3和ruby-1.9.3-p125.jQuery使用完全相同的gem结构,它的工作原理.我究竟做错了什么?

编辑:

我也看到了这个问题:Ruby 1.9抛出javascript编码错误.这不适用于此,我的文件是有效的UTF-8:

ruby-1.9.3-p125 :001 > d = File.read("./d3.js")
 => [...]
ruby-1.9.3-p125 :002 > d.encoding
 => #<Encoding:UTF-8> 
ruby-1.9.3-p125 :003 > d.valid_encoding?
 => true 
Run Code Online (Sandbox Code Playgroud)

编辑2:

我也尝试在我的插页中插入一些伏都教config/environment.rb.这是行不通的:

# -*- encoding : utf-8 -*-
# Load the rails application
require File.expand_path('../application', __FILE__)

# --------- VOODOO BEGINS HERE -----------------
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8 …
Run Code Online (Sandbox Code Playgroud)

javascript rubygems ruby-on-rails ruby-on-rails-3.1 asset-pipeline

7
推荐指数
1
解决办法
2287
查看次数

运行"bin/rake assets:precompile"时没有设置I18n加载路径!

我正在使用I18n-js,而我的客户端I18n.t调用在生产中运行时都返回翻译缺失消息.

一切都可以开发和测试.

此问题的根源似乎在资产管道中.

I18n.load_path不包含我的任何翻译(运行bin/rake资产:预编译时)它只包含以下路径:

["/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activesupport-3.2.3/lib/active_support/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activemodel-3.2.3/lib/active_model/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activerecord-3.2.3/lib/active_record/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/actionpack-3.2.3/lib/action_view/locale/en.yml"]
Run Code Online (Sandbox Code Playgroud)

这些看起来像来自gems的默认activesupport,activemodel,activerecord和actionpack翻译......

但是,在开发和生产中运行bin/rails控制台时,我的转换路径会按预期进行设置:

1.9.3p125 :002 > I18n.load_path
=> ["/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activesupport-3.2.3/lib/active_support/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activemodel-3.2.3/lib/active_model/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/activerecord-3.2.3/lib/active_record/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/actionpack-3.2.3/lib/action_view/locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/carrierwave-0.6.1/lib/carrierwave/validations/../locale/en.yml",
"/home/chris/.rvm/gems/ruby-1.9.3-p125@Project/gems/devise-2.0.4/config/locales/en.yml",
"/media/sf_code/Project/config/locales/active_record.en.yml",
"/media/sf_code/Project/config/locales/project.en.yml"]
Run Code Online (Sandbox Code Playgroud)

事实上,I18n文档指出:"默认语言环境是:en和来自config/locales/*.rb,yml的所有翻译都是自动加载的."

我也试过在application.rb中指定

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s]
Run Code Online (Sandbox Code Playgroud)

但仍然没有快乐.

任何人都知道什么可能导致I18n.load_path只在运行资产时才设置:precompile?

谢谢你的任何想法

ruby ruby-on-rails ruby-on-rails-3 asset-pipeline i18n-gem

7
推荐指数
1
解决办法
2427
查看次数

使用rails资产管道预编译slim模板

如果我可以使用rails资产管道预编译slim模板,那将会非常方便.我希望将我的模板粘贴在app/assets/html中并以这种方式提供它们.

这是我到目前为止所得到的:

# config/initializers/slim.rb
Rails.application.assets.register_engine('.slim', Slim::Template)

# config/application.rb
config.assets.paths << "#{Rails.root}/app/assets/html"
config.assets.register_mime_type('text/html', '.html')
Run Code Online (Sandbox Code Playgroud)

运行rake资产:预编译读取app/assets/html中的.html.slim文件,但它不编译它们,输出文件仍然具有.slim扩展名.

有没有办法让这项工作?

ruby-on-rails asset-pipeline slim-lang

7
推荐指数
1
解决办法
2322
查看次数

Rails 4 - 为了放置jQuery和bootstrap?

我正在试图弄清楚如何在我的application.js中加载资产.

我在application.js中有这些必需的文件(以及其他文件).

//= require bootstrap-sprockets
//= require jquery
//= require jquery-ui
//= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)

我的宝石文件有:

gem 'jquery-rails'
gem 'jquery-ui-rails'
Run Code Online (Sandbox Code Playgroud)

当bootstrap-sprockets在jQuery之前时,我的bootstrap下拉菜单(如下)工作正常.

<div class="row" style="margin-top:30px">
    <div class="col-md-3 col-md-offset-8">
        <% if policy(@project).show? %>    

            <div class="btn-group">
              <button type="button" style="color: black" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                STATUS: <%= text_for_state(@project.current_state) %> <span class="caret"></span>
              </button>
              <ul class="dropdown-menu">
                 <% if policy(@project).request_preapproval? %>    
                    <%= link_to "REQUEST APPROVAL", request_preapproval_project_path(@project), method: :put, :style=>"padding-left:20px; padding-right: 10px" %>
                <% end %>
                <li role="separator" class="divider"></li>
                <% if policy(@project).publish? %>    
                    <%= link_to "PUBLISH", publish_project_path(@project), …
Run Code Online (Sandbox Code Playgroud)

javascript jquery ruby-on-rails asset-pipeline twitter-bootstrap

7
推荐指数
1
解决办法
724
查看次数