Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未在heroku上加载Rails 4图像_Ruby On Rails_Heroku - Fatal编程技术网

Ruby on rails 未在heroku上加载Rails 4图像

Ruby on rails 未在heroku上加载Rails 4图像,ruby-on-rails,heroku,Ruby On Rails,Heroku,我花了一天的大部分时间试图将图像加载到我的heroku应用程序上。我尝试的一切都在本地工作,但部署到heroku后就不行了 我将png文件保存在“我的资源”下的“图像”文件夹中。我用css中的语法引用这些图像,例如 #signin { background: url(<%= asset_path 'sf.png' %>); background-size: 100%; } 预编译总是成功的 轨道4。还有什么好尝试的吗?默认情况下,图像不会作为资产使用,只有css和js。你应

我花了一天的大部分时间试图将图像加载到我的heroku应用程序上。我尝试的一切都在本地工作,但部署到heroku后就不行了

我将png文件保存在“我的资源”下的“图像”文件夹中。我用css中的语法引用这些图像,例如

#signin {
  background: url(<%= asset_path 'sf.png' %>);
  background-size: 100%;
}
预编译总是成功的


轨道4。还有什么好尝试的吗?

默认情况下,图像不会作为资产使用,只有css和js。你应该调查一下这个问题的答案

Syed Ehtsham Abbas在这个问题上

我需要结合几种解决方案来实现这一点,以下是我所做的:

Gemfile

gem 'rails_12factor', group: :production
heroku labs:enable user-env-compile -a yourapp
在我的Heroku控制台中

gem 'rails_12factor', group: :production
heroku labs:enable user-env-compile -a yourapp
production.rb

config.serve_static_assets = true
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
config.assets.compile = true

我不需要在本地预编译资产。

另一个问题是,在将资产加载到heroku之前,我在本地预编译资产。这需要您遵循一组不同的步骤,可以在下面找到。如果在本地预编译资产,则必须遵循这些步骤,否则对资产文件夹所做的任何更新都不会反映在prod中

RAILS\u ENV=production bundle exec rake资产:预编译


commit
push
到服务器。

我遇到了一个类似的问题,我用custom.css.scss中的以下行解决了它。。告诉我这是否适合你

background: image-url('sf.png')

根据您使用的是ERB还是Sass,引用资产的方式会有所不同。

我还没有发表评论的名声,但需要注意的是,Heroku labs功能已被删除,因此现在您将得到一个“无此功能:用户环境编译”错误


更多信息:

您需要做两件事来解决此问题。 首先,在
production.rb
文件中将这两行从false更改为true

      config.assets.compile = true
      config.assets.digest = true
第二,如果你的图像有这样的语法

    background: url("imgo.jpg") 
换成

     background: image-url("image.jpg")

我希望它能完成你的工作。

我在只显示图像方面也遇到了类似的问题。作为rails的新手,我不知道我可以使用:

而不是传统的html

在rails api中对image_标记进行了解释,但我发现这里更好地解释了它的用法:

我在应用程序中添加的全部内容是:
gem'rails\u 12factor',group::production

如heroku资产管道文档所述

Rails('4.1.5')我有一个类似的问题,图像没有显示在Heroku上,而是显示在本地。我没有使用回形针或carrierwave gems,我在本地预编译,也使用RAILS_ENV=production,我推送到github,它可以很好地部署到Heroku

我通过以下方式解决了这个问题:

config.serve_static_assets = true
config.assets.compile = true
config.assets.js_compressor = :uglifier
config.assets.digest = true

// delete precompiled assets
bundle exec rake assets:clobber --trace
RAIL_ENV=production bundle exec rake assets:clobber --trace
已将图像从应用程序/资产复制到公共/资产。然后:

// tests should pass
bundle exec rake assets:precompile --trace
RAILS_ENV=production bundle exec rake assets:precompile --trace

git commit
git push

在Heroku上运行良好。

我也尝试了许多解决方案,但我发现了一个非常宝贵的解决方案和解释 1.Heroku在公共文件夹中查找资产,这意味着您必须预编译资产,但如果您像我一样,在我的开发环境设置为gem sqlite,生产设置为pg时,有人在寻找预编译资产的方法,那么您可以这样做

在您的production.rb中

config.serve_static_assets = true
如果您没有安装gem-pg,则需要对其进行注释,并更改您的生产环境以使用gem-sqlite并运行它

RAILS_ENV=production bundle exec rake assets:precompile

当所有资源都已预编译完毕后,切换回默认设置,git add.,commit,并推送到最初有效但在再次重新编译和重新加载之后有效的heroku

broke@brad你能发布你的产品配置吗?我已经有了gem,但除此之外,
config.assets.compile=true
对我来说就足够了。在EU Cedar stack上运行Ruby 2.0、Rails 4.0。这是一个脏补丁,因为您将在运行时编译,因为
config.assets.compile=true
。它可以工作,但不是正确的生产设置。没有这样的功能:user env Compiled不在生产上编译资产true。这使得生产速度变慢。而是创建
config/initializers/assets.rb
,并将它们添加到其中,以便rails生产部门识别供应商和库预编译的资产<代码>Rails.application.config.assets.precompile@gwho,这似乎不适合我。将
config.assets.precompile+=%w(.svg.eot.woff.ttf.png.jpg.gif)
放在“/config/application.rb”中对我有帮助。这个解决方案会降低生产速度吗?这对我也很有效。我原来有:
background:url(file.png)
把它改成
background:image-url('file.png')
就成功了。这才是真正的解决方案。我原来有
background-image:image-url('file.jpg')
它有时有效,但一直有效:染料!!!除了这个(将
config.assets.compile
设置为
true
)之外,没有其他方法对我有效。是的,这也对我有效!谢谢Configuring:config.assets.compile=true不确定为什么这不是顶级注释。其他答案都不适合我。你刚刚救了我,让我不用在这上面浪费时间。除了资产,我什么都不用管。编译40篇文章之后,你终于回答了我的问题。非常感谢。当我设置config.assets.compile=false时,我可以在不加载任何css、图像和。。。文件(不可访问)。当我将其更改为true时,我看不到我的网站,但所有文件都可以通过自己的链接访问!!你有什么办法解决这个问题吗?正如其他人所说,
config.assets.compile=true
不适合生产。