标签: asset-pipeline

运行"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
查看次数

如何使用ember-rails gem为HandlebarsJS模板指定备用目录?

我有一个Rails应用程序,我在前端使用Ember.我想将与ember相关的文件在目录结构中向下移动一级,但是当我这样做时,模板不再呈现.

在应用程序的普通,vanilla,工作版本中,我的目录结构是:

./app/
  assets/
    javascripts
      application.js
      ember-app.js
      routes.js
      store.js
      models/
      controllers/
      routes/
      templates/
      views/
Run Code Online (Sandbox Code Playgroud)

with:application.js

//= require jquery
//= require jquery_ujs
//= require handlebars
//= require ember
//= require ember-data
//= require_self
//= require ember-app
App = Ember.Application.create();
Run Code Online (Sandbox Code Playgroud)

和:ember-app.js

//= require ./store
//= require_tree ./models
//= require_tree ./controllers
//= require_tree ./views
//= require_tree ./helpers
//= require_tree ./templates
//= require ./router
//= require_tree ./routes
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,我想将ember-app文件和所有ember javascript代码向下移动一级,当我这样做时,模板不会渲染.(部分应用程序使用Ember,但不是整个应用程序,我正在尝试通过资产管道设置两条不同的路径.)

所需的结构是:

./app/
  assets/
    javascripts
      application.js
      embro/
        ember-app.js
        routes.js
        store.js
        models/
        controllers/
        routes/
        templates/
        views/
Run Code Online (Sandbox Code Playgroud)

with:application.js(修订版:'require …

ruby-on-rails asset-pipeline handlebars.js ember.js ember-rails

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

Ruby on Rails 4中没有摘要的字体资源

我的字体资产在生产中没有摘要的情况下出现了问题.我一耙资产:预编译得到:

 5futurebit-webfont-c133dbefd9e1ca208741ed53c7396062.eot
Run Code Online (Sandbox Code Playgroud)

我试图将它与scss中的font-face链接到asset-url,asset-path,font-url和font-path,但所有这些都最终输出路径:

 /assets/5futurebit-webfont.eot
Run Code Online (Sandbox Code Playgroud)

现在我正在将/ app/assets/fonts中的资产直接复制到/ public/assets /但是感觉不是这样做的.

font-face asset-pipeline ruby-on-rails-4

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

Rails 4.0.3使用asset_sync生成不正确的资产路径

我以前曾多次使用asset_sync gem取得了巨大成功,但在Rails 4.0.3项目中使用它似乎导致了问题.

资产被上传,散列和gzip到目标目录(我只使用默认的'assets'),但是当在临时/生产环境中运行应用程序时,路径不正确.

他们采取以下形式:

S3_DOMAIN.com/stylesheets/application.css
Run Code Online (Sandbox Code Playgroud)

代替:

S3_DOMAIN.com/assets/application-HASH.css
Run Code Online (Sandbox Code Playgroud)

还有其他人遇到过这个问题吗?我发现反转此行为的唯一方法是将config.assets.compile设置为true,但这在生产环境中不起作用.

以下是相关的配置文件:

  ## environments/staging.rb
  config.serve_static_assets = false
  config.assets.compress = true
  config.assets.js_compressor = :uglifier
  config.assets.css_compressor = :sass
  # Have to set this to true to make asset_sync generate the correct links
  config.assets.compile = false
  config.assets.digest = true
  config.assets.enabled = true
  config.assets.initialize_on_precompile = true
  config.action_controller.asset_host = "//#{Figaro.env.fog_directory}.s3.amazonaws.com"
  config.action_mailer.asset_host = "//#{Figaro.env.fog_directory}.s3.amazonaws.com"
  config.assets.prefix = "/assets"
  config.assets.debug = false
  config.assets.cache_store = :memory_store

##config/asset_sync.yml
defaults: &defaults
  fog_provider: 'AWS'
  aws_access_key_id: "<%= ENV['AWS_ACCESS_KEY_ID'] %>"
  aws_secret_access_key: "<%= ENV['AWS_SECRET_ACCESS_KEY'] %>"
  # To …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails asset-pipeline ruby-on-rails-4 asset-sync

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

JW Player - 加载播放器时出错:在Heroku上的Rails 3.2应用程序中找不到HTML5播放器

我有JW Player 6的许可版本.我下载了文件并将它们放在assets/javascript目录中.除了皮肤目录,还有一个用于HTML5播放器的JS文件以及一个用于flash播放器的flash.swf文件.到目前为止,我所做的一切都在本地工作,但是当我推送到Heroku时,我会遇到错误.

第一次尝试:

在我的application.js档案中:

...
//= require jwplayer/jwplayer
//= require jwplayer/jwplayer.html5 # the file name is jwplayer.html5.js
...
Run Code Online (Sandbox Code Playgroud)

运行后,rake assets:clean ; rake assets:precompile我在视图中得到以下错误(在Heroku上):

An ActionView::Template::Error occurred in nodes#show:
jwplayer/jwplayer.html5.js isn't precompiled
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

在我的application.js档案中:

...
//= require jwplayer/jwplayer
...
Run Code Online (Sandbox Code Playgroud)

然后,我将其添加到production.rb环境配置文件中:

# Also tried %w(jwplayer.html5.js)
config.assets.precompile += %w(jwplayer/jwplayer.html5.js)
Run Code Online (Sandbox Code Playgroud)

在清理和预编译资产并推送到Heroku之后,原始版本ActionView::Template::Error不再发生,但现在JW播放器显示以下消息:

Error loading player: HTML5 player not found
Run Code Online (Sandbox Code Playgroud)

这是HAML视图中的JW Player初始化:

:javascript
  jwplayer("video_display_object_#{display_object.id}").setup({
    width: "948",
    height: "533",
    image: "#{display_object.video_screenshot_url}",
    file: "#{display_object.resource_url}",
    modes: [
        { …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku jwplayer asset-pipeline jwplayer6

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

如何在Controller层上使用Rails image_url helper以便它返回正确的值?

我试图从控制器中调用image_url(来自ActionView::Helpers::AssetUrlHelper模块).我的控制器是一个API控制器,可以呈现json响应.因此,控制器准备对象,我jBuilder用于呈现实际的JSON响应.这是代码:

class Api::Mobile::HomeController < Api::Mobile::ApplicationController
  include ActionView::Helpers::AssetUrlHelper

  def index
    @items = [Api::Mobile::HomePageItem.new(
                type: 'image',
                image: image_url("api/mobile/home/tutor-with-student.jpg"))]
  end
end
Run Code Online (Sandbox Code Playgroud)

该图像tutor-with-student.jpg存在于以下文件夹中:

app/assets/images/api/mobile/home/tutor-with-student.jpg
Run Code Online (Sandbox Code Playgroud)

问题是image_url返回值:

http://myhost.com/images/api/mobile/home/tutor-with-student.jpg
Run Code Online (Sandbox Code Playgroud)

代替

http://myhost.com/assets/api/mobile/home/tutor-with-student.jpg
Run Code Online (Sandbox Code Playgroud)

请注意,当我使用image_url实际视图时,该方法返回正确的值.

如何image_url在Controller层上使用该方法以使其返回正确的值?

assets ruby-on-rails asset-pipeline ruby-on-rails-4.1

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

使用'material-ui'和react-rails gem?

我想在我的Rails 4应用程序中使用material-ui组件库.我目前正在使用react-rails gem将.jsx编译添加到资产管道.我在gemfile中通过rails-assets添加了material-ui,如下所示:

source 'https://rails-assets.org' do
  gem 'rails-assets-material-ui'
end
Run Code Online (Sandbox Code Playgroud)

我在我的application.js文件中需要这样的库:

//= require material-ui
Run Code Online (Sandbox Code Playgroud)

但是我不断收到错误"找不到文件'材料-ui".如何使用react-rails gem在我的Rails应用程序中使用material-ui组件库?

ruby-on-rails asset-pipeline reactjs react-jsx react-rails

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

Dropbox 目录重命名导致资产预编译时出现“URI::InvalidURIError: bad URI”

我刚刚将我的 Dropbox 帐户从个人帐户升级为企业帐户。结果,它将我的主要保管箱名称从“Dropbox”更改为“公司名称 Dropbox”。

现在,当我尝试启动 Rails 应用程序或执行rails assets:precompile以下操作时,出现以下错误:

$ rails assets:precompile
yarn install v1.22.0
[1/4]   Resolving packages...
success Already up-to-date.
?  Done in 0.15s.
rails aborted!
URI::InvalidURIError: bad URI(is not URI?): file-digest:///Users/name/Company Name Dropbox/Username/appfolder/jsp/app/assets/stylesheets/trestle/_variables.scss
/.rvm/gems/ruby-2.5.1@myapp/gems/sprockets-3.7.2/lib/sprockets/uri_utils.rb:45:in `split_file_uri'
/.rvm/gems/ruby-2.5.1@myapp/gems/sprockets-3.7.2/lib/sprockets/uri_utils.rb:126:in `parse_file_digest_uri'
/.rvm/gems/ruby-2.5.1@myapp/gems/sprockets-3.7.2/lib/sprockets.rb:159:in `block in <module:Sprockets>'
/.rvm/gems/ruby-2.5.1@myapp/gems/sprockets-3.7.2/lib/sprockets/dependencies.rb:67:in `resolve_dependency'
/.rvm/gems/ruby-2.5.1@myapp/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:23:in `block in initialize'
/.rvm/gems/ruby-2.5.1@myapp/gems/sprockets-3.7.2/lib/sprockets/cached_environment.rb:59:in `resolve_dependency'
Run Code Online (Sandbox Code Playgroud)

我已经更新到 Rails 的最新可用版本5.2.4.3

如何在不更改项目位置的情况下解决此问题?我需要将它留在我的 Dropbox 文件夹中。

asset-pipeline ruby-on-rails-5 ruby-2.5

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

Rails 6 如何链接 asset/config/manifest.js 中的子文件夹

我刚刚升级到 Rails 6 并按照指南制作了这个清单文件:

//= link_tree ../fonts
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
Run Code Online (Sandbox Code Playgroud)

但 Rails 抱怨我没有添加资产/images/subfolder/

我如何链接到/images它及其下的所有内容?

ruby-on-rails asset-pipeline ruby-on-rails-6

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

使用 Tailwind 从资产管道插入背景图像

我一直在尝试在我的项目中借助 Tailwind 添加背景图片,但它不起作用,我猜是因为某个地方的资产管道冲突?

我尝试过的:

  • tailwind.config像这样 直接将图像插入我的: 'essential-oil': "url('/assets/images/essential-oil.png')"'essential-oil': "asset-url('essential-oil.png')"
  • 使用 a 将图像直接插入到我的 HTML 中style: "background-image:url(/assets/images/essential-oil.png)
  • 将我的图像放在应用程序的其他位置,例如Public

所有解决方案都不起作用。最糟糕的是,我的所有样式最多都会从我的 HTML 中消失,样式看起来不错,但图片不存在。任何想法 ?

谢谢。

ruby-on-rails asset-pipeline tailwind-css

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