使用本地资产来覆盖宝石文件资产
问题描述:
我有一个在其中有image_x.jpg的rails引擎gem。我尝试通过将其添加到资产&公共目录中,使用我在本地项目中的那个图像覆盖该图像。使用本地资产来覆盖宝石文件资产
但是,Rails继续从gem文件而不是我的本地文件显示图像。
如果我修改了宝石并删除了图像image_x.jpg,那么我的本地项目中的图像出现,但这并不理想。
有没有办法让轨道从我的本地项目中提供图像,而不是在gem中的图像?
换言之,有没有一种方法可以将本地资源优先于gem文件资产?
答
默认情况下,Rails应该使用您的本地image_x.jpg。
要检查以便Rails会寻找资产,打开控制台,然后输入:
Rails.application.config.assets.paths
您应该能够验证您的应用程序/资产目录中的宝石的资产目录之前出现搜索PATH。如果不是,则可能会修改资产路径。
如果您的资产路径看起来不对,您可以轻松修改它。 (这只是一个字符串数组。)要添加新的最高优先级目录,尝试添加一些像这样的初始化:
Rails.application.config.assets.paths.unshift "/some/other/path"
也可以尝试删除tmp/cache/assets
并重新启动服务器。
有没有办法重新确定Rails.application.config.assets.paths的优先级?或者在顶部而不是在底部添加路径? – newUserNameHere
绝对如此。这只是表示目录路径的字符串数组。我会更新我的答案。 –
Unshift似乎不适用于此。也没有扭转阵列。反转字符串是我知道解释问题的最好方法,让我们说gem增加路径A和B.然后我添加路径C和D.现在我们有A,B,C,D。当我倒退!我最终得到了'A,B,D,C'。所以看起来我可以在数组中修改的唯一路径是本地添加的路径,而不是通过gem添加的路径。有想法该怎么解决这个吗?还有一件事,我在我的'environments/development.rb'配置文件中添加这行代码,可能是错误的地方? – newUserNameHere