如何检查整个rails项目是否存在编译错误

我是ruby和rails的新手。 我习惯于在IDE(Xcode,Visual Studio等)中工作,在那里我可以执行项目范围/工作区范围的“构建/编译”操作。

假设我在rails项目中修改了一些ruby文件。 我还没有写出能够完成所有修改的测试。

有没有办法确保我的所有* .rb文件在运行时不直接运行它们进行编译? 我真的只想执行“编译所有我的ruby / erb文件”操作,以便我知道我目前没有任何语法错误。

UPDATE

我可能应该提到我已经专业编写了20年的代码。 我意识到Ruby不像C ++那样编译,但这并不意味着它的语法无法检查。 就我而言,我决定使用ruby-lint来捕获基本的语法错误,而不必在运行时运行代码。

Ruby是一种解释型语言。 没有编译步骤。 请在编写代码之前按照TDD并编写测试。

更新:由于这个答案被接受,我不能删除它,除非OP接受另一个答案,但人们通过谷歌搜索登陆这里,请看其他答案。 这更像是一句诙谐的评论而不是答案。 Ruby社区有很棒的工具可以进行各种静态代码分析,比如Rubocop和朋友。 至少, ruby -c将完成OP想要的。

如果您使用的是Linux或Mac或带有gnu find命令的搞笑Windows框,您可以执行以下操作:

 find /your/application_directory -name=*.rb -exec ruby -c {} \; 

这将在app目录中找到所有ruby脚本并在它们上运行ruby -c ,它将运行语法检查并使用Syntax OK或如果脚本中存在错误而返回错误消息。

您还可以为编辑器创建一个宏,这样当您保存或按下组合键时,它将在文件上运行ruby -c并为您提供结果。 在vim中,您可以在.vimrc中使用它:

 map c :w !ruby -c 

哪个映射Leader -c来编写文件并使用ruby -c检查它的语法。

validationrake-tasks和视图的语法错误可能有点棘手,但许多像haml这样的模板引擎都有类似的-c语法检查参数。

为什么你不能继续使用像RubyMine(或其父亲,IntelliJ)这样的IDE?

还有一些文本编辑器插件可以突出显示语法问题,但谁知道你在使用什么。 我使用Sublime Text 2进行非IDE开发,它支持多种自动linting。 和Emacs一样,但我猜你不会去那里。

无论你是否使用“真正的”TDD,你都需要加强代码编写周期并逐步增加工作量,这样你就没有机会在第一时间积累这样的高级(低级别?)错误。 。 无论语言或环境如何,都是如此。

你甚至可以这样做

find . -type f -name '*.rb' -or -name '*.ru' -or -name '*.rake' > /tmp/list.txt while read file ; do ruby -c $file done < /tmp/list.txt

检查整个项目

这是来自@Zac评论的单行答案, 我把它作为答案包括在内,因为我们不是一直在阅读评论

 find . | grep ".*\.rb$" | xargs -L 1 ruby -c