scss 辅助方法中生成的资产路径具有重复的资产前缀
Asset path generated in scss helper methods has duplicated asset prefix
我认为这种行为是一个错误,但我也在这里问。我已经在 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 文件中的类似方法获得了两次前缀。
因此,Rails 尝试在 public/myprefix/myprefix/background_digest.jpg
中查找图像,而不是 public/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 class 添加到帖子索引视图中
- 迁移数据库
- 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
您忘记了一件简单的事情...斜杠 :)
而不是
Rails.application.config.assets.prefix = 'myprefix'
在config/initializers/assets.rb
你需要把
Rails.application.config.assets.prefix = '/myprefix'
就是这样......我完全按照你的步骤做了,它在本地对我有用。
P.S。我刚刚在我的生产服务器上启动了一个新应用程序,一切都运行良好。
我认为这种行为是一个错误,但我也在这里问。我已经在 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 文件中的类似方法获得了两次前缀。
因此,Rails 尝试在 public/myprefix/myprefix/background_digest.jpg
中查找图像,而不是 public/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 class 添加到帖子索引视图中
- 迁移数据库
- 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
您忘记了一件简单的事情...斜杠 :)
而不是
Rails.application.config.assets.prefix = 'myprefix'
在config/initializers/assets.rb
你需要把
Rails.application.config.assets.prefix = '/myprefix'
就是这样......我完全按照你的步骤做了,它在本地对我有用。
P.S。我刚刚在我的生产服务器上启动了一个新应用程序,一切都运行良好。