我的 app/assets 目录中有 javascripts 和 stylesheets 目录,就像任何普通的 Rails 应用程序一样。
但是,我也希望有一个插件目录。
例子:
app/assets/plugins/myPlugin1/somefile.js
app/assets/plugins/myPlugin1/somefile.css
问题是,如果我使用
<%= javascript_include_tag 'plugins/myPlugin1/somefile.js' %>
我会收到 404 错误,因为
/assets/javascripts/plugins/myPlugin1/somefile.js
不存在。然后,我注意到“插件”目录试图在 javascripts 中被访问。我认为这与“javascript_include_tag”有关。
经过一番研究,我意识到我必须将此行包含到 config/application.rb
config.assets.paths << Rails.root.join("app", "assets")
它似乎奏效了。在 WEBRick 上,在开发上,它运行良好。
现在我成功地部署到服务器,预编译了资产,并认为我已经准备好了。
目录
/public/assets/
被创建。“app/assets/javascripts”、“app/assets/stylesheets”和“app/assets/plugins”中的所有内容都被预编译为public/assets
什么有效
app/assets/javascripts/login.js
能够在一个视图中访问
<%= javascript_include_tag 'login.js' %>
什么没用
属于“插件”的文件。
app/assets/plugins/myPlugin1/somefile.js
被预编译为
public/assets/myPlugin1/somefile.js
但是当我跑
<%= javascript_include_tag 'plugins/myPlugin1/somefile.js' %>
它试图访问
/javascripts/plugins/myPlugin1/somefile.js
根据我的开发经验,正确的路径是:
/myPlugin1/somefile-(some hex hash).js
因此,如您所见,在生产中我遇到了与未添加时相同的问题
config.assets.paths << Rails.root.join("app", "assets")
到应用程序.rb
可能是什么问题呢?