scss帮助器方法中生成的资产路径具有重复的资产前缀

时间:2016-06-26 19:56:45

标签: ruby-on-rails ruby-on-rails-4 asset-pipeline sprockets

我认为这种行为是一个错误,但我也在这里问。我已经在sprockets-rails github repo上打开了一个错误报告。

我遇到资产前缀问题。如果我配置Rails.application.config.assets.prefix = 'myprefix'config/initializers/assets.rb中,然后运行:

RAILS_ENV=production rake assets:clobber RAILS_ENV=production rake assets:precompile

使用正确的路径生成我的所有预编译资产(public/myprefix/asset_digest.png)。从.erb文件中查找资源可以正常工作,正确生成路径并正确显示所有内容。问题是在image-url()中生成的路径和.scss文件中的类似方法获得前缀两次。

因此,而不是public/myprefix/background_digest.jpg Rails尝试在public/myprefix/myprefix/background_digest.jpg处找到图像,但图像已正确预编译并保存到public/myprefix文件夹。一种解决方法是简单地将所有资产从myprefix复制到myprefix/myprefix,但这是处理此问题的一种令人讨厌的方法。这仅适用于从.scss文件引用的资产。

为了确保我的配置不是问题,我尝试在新应用程序上重现它:

Ruby:2.3.0
Rails:4.2.6。
rails new prefixtext -T cd prefixtest rails generate scaffold post title body:string

构造

  • 帖子的根路由#index
  • application.scss中的一条css规则:
    .background { width: 500px; height: 500px; background-image: image-url('my-background.jpg'); }
  • div。将.background类添加到帖子索引视图
  • 迁移db
  • assets:clobber和assets:precompile
  • 启动服务器
  • 所有命令都以RAILS_ENV=production
  • 为前缀

我也尝试使用sprockets-rails版本2.3.2,同样的事情发生了。

我的机器是带有rvm的ArchLinux,伙计也试过他的机器(最后一个Ubuntu也用rvm),同样的事情发生在我的服务器上(带有rvm的CentOs 7)。 经测试的Ruby版本:2.3.0,2.1.2,2.1.5。经过测试的Rails版本:4.2.1,4.2.6

任何人都知道可能是什么情况,或者它确实是一个错误。我该如何进一步测试呢? 以下是错误报告:https://github.com/rails/sprockets-rails/issues/363

1 个答案:

答案 0 :(得分:0)

你忘记了一件简单的事情......斜线:)

而不是

Rails.application.config.assets.prefix = 'myprefix' 

在config / initializers / assets.rb

你需要把

Rails.application.config.assets.prefix = '/myprefix'

就是这样......我完全按照你的步骤做了,并且在我的本地工作。

P.S。我刚刚在我的生产服务器上启动了一个新的应用程序,而且一切都运行良好。