Rails - 部署后Rails.root.join行为不端

时间:2015-12-25 21:56:58

标签: ruby-on-rails ruby-on-rails-4 rails-assets

我的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

不存在。那时我注意到了#34;插件&#34; dir试图在javascripts中访问。我认为这与&#34; javascript_include_tag&#34;。

有关

经过一些研究,我意识到我必须将这一行包含在config / application.rb

config.assets.paths << Rails.root.join("app", "assets")

它似乎有效。在WEBRick上,在开发方面,它的工作非常精彩。

现在我已成功部署到服务器,预编译资产,并认为我已准备就绪。

目录

/public/assets/

已创建。一切都在&#34; app / assets / javascripts&#34;,&#34; app / assets / stylesheets&#34;和&#34; app / assets / plugins&#34;被预编译为公共/资产

做了什么

app/assets/javascripts/login.js

能够在具有

的视图中访问
<%= javascript_include_tag 'login.js' %>

做什么工作

属于&#34;插件&#34;。

的文件
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")

到application.rb

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

你可以这样:

event.preventDefault();

或者逐个设置每个插件,如:

Dir.glob("#{Rails.root}/app/assets/plugins/**/").each do |path|
  config.assets.paths << path
end

但是如果你有子目录,myPlugin目录就不会加载每个文件。所以第一个选项对你来说可能更好。