我正在编写一个gem,必须根据app启动时的配置选择哪个版本的XYZ.js文件可用于sprockets //= require "XYZ"
语句。我的解决方案是将Rails应用中的XYZ.variant.js
或XYZ.variant2.js
复制到/tmp/cache/<gemname>/XYZ.js
。如果我手动测试,这似乎有效;如果我转到test/dummy
文件夹并通过rackup
测试功能,则XYZ.js
已正确找到。如果我通过另一个rails应用程序测试gem,它可以工作(通过Gemfile中的path:
)。
但是,当我为这个gem运行测试套件时,它失败了,因为在初始复制到/tmp/cache/<gemname>/XYZ.js
之后的某个时刻,整个tmp文件夹被清除,并且当时它的唯一内容是test实际运行的是/tmp/cache/assets
。我不明白这是如何与测试套件和其他2种工作方法不同的表现。这就像初始化顺序不同或类似。是否存在通过rackup
运行的特殊内容会改变初始化顺序?
请注意,在执行tmp复制的代码之前,测试套件工作正常。这只是生成的普通enginex
代码。
答案 0 :(得分:0)
这与初始化程序无关,而是另一个破坏tmp文件夹的测试用例(对于生成器)。