如何检查整个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