我有一个Rails服务器设置,以便其中一个视图从S3加载Ember应用程序-类似于下面的application.html.erb
:
...
<body>
<%= yield %>
<%= ember_assets.script_tag_for('vendor') %>
<%= ember_assets.script_tag_for('my-ember-frontend-app') %>
在我的ApplicationController
中:
class ApplicationController < ActionController::Base
helper_method def ember_assets
@ember_assets ||= begin
asset_loader = EmberAssets::FileLoader.new # responsible for loading JS from S3
EmberAssets.new(request: request, asset_loader: asset_loader)
end
end
...
Javascript加载良好,因为我的EmberAssets
Ruby类正确地指向并加载了来自S3的JS文件。但是,我将徽标和其他一些默认资产存储在public/assets/images/...
中,并在我的Ember应用中读取它们,如下所示:
<img src="/assets/images/logo.png" alt="logo">
问题在于,虽然JS已正确加载,但无法从S3加载图像文件。
我如何使它,使我的Ember应用程序读取默认资产从S3以及?我检查了S3和资产是在正确的文件夹,如预期的指纹和所有。
我正在使用Rails 6和Ember 3.25,我已经安装了这些ember-cli-deploy插件,用于构建和部署我的Ember应用程序。
"ember-cli-deploy": "^1.0.2",
"ember-cli-deploy-build": "^2.0.0",
"ember-cli-deploy-json-config": "^1.0.1",
"ember-cli-deploy-s3": "^3.0.0",
这是我的构建配置。我尝试在前面添加我的S3 bucket url,但没有成功:
module.exports = function (defaults) {
let app = new EmberApp(defaults, {
// Add options here
fingerprint: {
prepend: 'https://ember-s3-prod.s3.amazonaws.com/'
}
});
...
谢谢你!
1条答案
按热度按时间ijxebb2r1#
我看了看编译后的JS,结果发现,我忽略了复制由
ember deploy production
命令创建的新index.json
,这意味着我的rails服务器指向的是旧资产,而不是最近部署的资产。要点是,您可以为如何编译Ember应用程序documented here添加选项,而对于我的用例,我所需要的只是
prepend
选项。