小编Ida*_*oEv的帖子

如何覆盖gem中的rails生成器模板?

如果要覆盖生成器模板(不替换生成器本身),在Rails 3中,您只需将文件放在lib/templates中相应命名的位置,Rails就会找到它们.

如果你想用宝石做这件事怎么办?我正在尝试采用我的团队的标准化脚手架格式并对其进行创建,以便我们可以在所有项目中共享它并轻松更新,而不是将文件复制到每个项目的lib /中.这适用于我创建新生成器的情况; 我用application.rb中的config.generators挂钩,然后Rails找到它.但是当我将模板文件放入gem中的lib/templates时,Rails首先找到它自己的默认模板,然后渲染它们而不是我的.我认为搜索顺序是RAILS_ROOT/lib/templates,RAILS_GEMS/lib/templates,OTHER_GEMS/lib/templates.

解决方案是什么?我在这方面找不到很多docco,并且通过Rails进行代码跳转没有提供明显的解决方案.谢谢!

gem templates generator ruby-on-rails-3

16
推荐指数
2
解决办法
2139
查看次数

如何jUnit测试另一个线程中的代码结果

我有一个在线程中运行的进程(用作实时信号分析过程).我想为该线程进程提供已知输入,然后在jUnit中测试输出是否正确.我有一个回调监听器,它可以在线程完成数据处理时通知我,并且我可以通过将测试用例本身注册为监听器来成功地对结果运行断言.
当这些断言失败时,它们会抛出异常.但是这个异常并没有被jUnit注册为失败,大概是因为它们发生在测试方法之外.

如何构建我的jUnit测试,以便在侦听器返回后测试失败?这是代码的简化版本.

 public class PitchDetectionTest extends TestCase 
    implements EngineRunCompleteListener() {
  AudioData            fixtureData;
  PitchDetectionEngine pitchEngine;

  public void setUp() {
    fixtureData = <stuff to load audio data>;
  }

  public void testCorrectPitch() {
    pitchEngine = new PitchEngine(fixtureData);
    pitchEngine.setCompletionListener(this);
    pitchEngine.start();   
    // delay termination long enough for the engine to complete
    try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); }
  }

  // gets called by the PitchEngine when it has finished processing all data in the
  // fixtureData.   This is the only method …
Run Code Online (Sandbox Code Playgroud)

java junit multithreading

13
推荐指数
1
解决办法
1万
查看次数

如何获取ckeditor资源来编译和加载Rails 3.1资产管道

我正在尝试在Rails 3.1应用程序中使用CKEditor.我在app/assets/javascripts/ckeditor /中有ckeditor目录,删除了未压缩和模块化的源等无关的东西.

它在开发中工作正常.在生产或登台环境中,ckeditor找不到它自己的文件:config.js,lang/en.js skins/kama/editor.css.我可以看到这些文件没有被预编译,这是有道理的,因为默认情况下资产管道不会包含或预编译与/.css/或/.js/匹配的任何内容.

根据rails docs和之前的答案,如下所示,添加config.assets.precompile所需的文件应该是解决方案.然而,尽管付出了大量的努力,我无法弄清楚我应该使用config.assets.precompile的格式.它没有记录,也没有给出任何例子.

我试过按名称显式添加文件:

config.assets.precompile << ['config.js', 'en.js', 'editor.css']
Run Code Online (Sandbox Code Playgroud)

我尝试添加与文件匹配的正则表达式:

config.assets.precompile << [ /.*config\.js/, /.*en.js/, /.*editor.css/ ]
Run Code Online (Sandbox Code Playgroud)

我试过明确添加完整路径:

config.assets.precompile << File.join(Rails.root, 'app', 'assets', 'javascripts', 'ckeditor', 'config.js')
(etc...)
Run Code Online (Sandbox Code Playgroud)

在所有这些情况下(以及我尝试过的所有其他情况),运行rake资产:预编译仍然无法将我需要的文件移动到公共/资产中.所有图像都是如此,但不是CKEditor需要运行的三个javascript和/或css文件.

有什么想法吗?

ruby-on-rails ckeditor ruby-on-rails-3 asset-pipeline

5
推荐指数
1
解决办法
3259
查看次数