Rails adblock JS文件在生产/开发中的行为有所不同

时间:2019-01-30 11:25:10

标签: javascript ruby-on-rails ruby-on-rails-4 adblock

我的ads.js文件夹中有一个文件assets/javascripts,位于轨道中。它包含一行代码-canRunAds = true,我使用下面的脚本在应用程序的其他地方查询该代码。如果返回undefined,我将投放一条adblock消息。

当我对其进行测试时,它可以完美地在开发中运行,canRunAds的确会返回undefined。但是,在生产环境中,启用adblock会记录消息Adblock not detected,即无法正常工作。奇怪的是,我还收到Chrome告诉我ERR_BLOCKED_BY_CLIENT的{​​{1}}文件...因此该文件被阻止了,但是ads.js仍然返回canRunAds,怎么回事?

我已经预编译了资产,并且true文件肯定在其中。我对Rails如何加载资产的知识非常有限,以至于我不知道接下来Google应该如何解决。有人告诉我,Rails生产有时会“在任何时候重新加载并自动加载所有东西”,但这就是我要做的所有信息...

任何帮助/指针将不胜感激!

ads.js

1 个答案:

答案 0 :(得分:0)

最终弄清楚了。

它正在development中工作,因为Rails分别提供了ads.js之类的静态资产文件(因此adblock会在文件名中获取并阻止它)。我认为这是因为设置了变量config.serve_static_files = true(在生产中是假的)。

在生产中,文件内容被铲入application.js中,因此文件名没有被提取。我把它放到public文件夹中,就可以了。