首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linting for Ruby < 2.0.0

Linting for Ruby < 2.0.0
EN

Stack Overflow用户
提问于 2018-08-19 20:39:33
回答 2查看 136关注 0票数 0

我有一个包含许多Ruby文件的项目,这些文件是由外部程序加载的,带有嵌入式Ruby解释器(以及其他一些库)。我正在尝试使用RubyMine和Rubocop来帮助开发,但问题是,所说的嵌入式解释器是1.9.2版,不能以任何方式升级。有没有可能仍然在RubyMine中使用Rubocop或其他linter,同时确保代码与旧的解释器兼容?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-20 08:36:44

是的,你可以,Check this out,然后让RuboCop知道你的项目在更新.rubocop.yml文件时支持的最旧版本的Check this out

代码语言:javascript
复制
AllCops:
  TargetRubyVersion: 1.9
票数 1
EN

Stack Overflow用户

发布于 2018-08-20 08:20:00

简短的回答是,可以更改RubyMine中使用的linter,JetBrains网站上有完整的演练介绍如何更改。我根本不知道有没有专门为Ruby2.0之前的版本工作的linter,也不是说它们不存在。

更长的答案是,如果解释器通过另一个程序运行,而不是使用真正的Ruby安装,那么它真的不会有太大的不同,并且任何linter都不会可靠地为您工作。有很多代码linter仍然认为是完全可以接受的,但在嵌入式VM中运行时会失败。

代码语言:javascript
复制
# Linter thinks this perfectly fine, part of 1.9.2 standard library
require 'base64' 

# Still thinks this perfectly fine. This all fails miserably though
Base64.encode64('My string')

最明显的例子是整个标准库、gem、rake以及任何不属于“核心”库的东西。基本的经验法则是,如果你必须require一个脚本(不包括你项目的本地脚本),它是不会工作的。

它永远不可靠的另一个原因是,你不知道嵌入的Ruby解释器是否被改变了,或者为了它们的目的从Ruby中删除了一些特性,而linter甚至没有办法知道这一点。几年前,我涉足了RPG Maker系列,发现他们的Ruby中的某些内置功能从他们的自定义构建中删除(或至少隐藏),这是一种艰难的方式。

如果你熟悉Ruby,那么你显然可以避开Ruby对核心库实现的主要和最常见的2.0+更改,但了解(即使是使用linter)的唯一可靠方法是测试,这无论如何都需要做(或者至少你应该这样做)。RubyMine对Minitest和RSpec的自动化提供了很好的支持。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51917742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档