我有一个很老的模板系统写在ERB之上.它依赖于存储在数据库中的ERB模板.这些是阅读和渲染.当我想将数据从一个模板传递到另一个模板时,我使用:locals参数来实现Rails渲染方法.为了在某些模板中设置这些变量的默认变量,我使用定义的?方法,它只是告诉我是否已定义局部变量,如果不是,我使用默认值初始化它,如下所示:
unless defined?(perex)
perex = true
end
Run Code Online (Sandbox Code Playgroud)
我正在将应用程序升级到最新的Rails,我看到一些奇怪的行为.基本上这有时是有效的(有时perex是未定义的),有时它不会(perex被定义并设置为nil).这种情况没有任何其他变化.
我有两个问题:除了使用定义之外还有更好的方法吗?这证明是不可靠的(在顶级Rails 1.6上几年可靠)?这种方式不应该导致我重写所有模板.我一直在浏览Ruby文档并且无法找到任何有关已定义的内容?方法.它被弃用了还是我只是盲目的?
编辑:实际问题是由似乎是Ruby/eRB的错误造成的.有时,除非声明可行,但有时不行.奇怪的是,即使第二条线被执行,perex仍然没有留给世界其他地方.删除已定义?解决了这一点
我有一个ant build构建目录,调用javac和所有常规的东西.我遇到的问题是,当我尝试清理(删除所有生成的东西)时,删除任务报告无法删除某些文件.当我尝试手动删除它时它工作得很好.这些文件显然没有被任何其他进程打开,但是ant仍然无法删除它们.我能做什么?
我有一个makefile,取决于一些属性设置vpath并生成一个源文件列表到一个变量.我需要在不编译任何内容的情况下运行makefile(编译实际上是由不同的makefile处理),并且根据vpath设置查看文件名匹配的真实文件.