Tag: irb

IRB历史不适用于Ruby 2.3.0

我在OS X 10.11.4上通过rbenv安装了Ruby 2.3.0p0。 在IRB会议中,历史记录正常。 但是,我无法跨会话访问IRB历史记录。 我尝试了我的系统Ruby,2.0.0p648,IRB会话的历史记录工作正常。 我尝试通过rbenv安装相同版本的Ruby,它也有工作历史。 我在工作和非工作会话之间比较了IRB.conf的值,没有看起来IRB.conf (尽管奇怪的是,在这两种情况下, irb / ext / save-history.rb都是空白文件)。 查看我的.irb_history文件,它似乎被替换而不是附加了最新会话的命令。 我可以加载2.0.0 IRB会话并滚动这些命令就好了。 我已经尝试过rbenv irb历史记录中列出的答案没有成功保存 。 我也尝试了irb历史中选定的答案不起作用 。 我必须改变选定的答案来替换#nitems方法。 这表明正在从历史文件中读Readline::HISTORY ,并将其推送到Readline::HISTORY 。 但是,检查Readline::HISTORY没有显示任何内容。 通过Readline.readline将我的.irb_history中的前一行添加到Readline历史记录中,并指定add_hist = true,我可以破解历史。 但是,绝对不是将以前的命令添加到Readline的正确方法。 我知道我可以切换到像撬的东西,但我想弄明白这一点。 有关为什么命令没有添加到Readline的任何建议,以及如何更改它?

正则表达式“char类错误中的空范围”

我的代码中有一个正则表达式,它匹配url的模式并抛出错误: /^(http|https):\/\/([\w-]+\.)+[\w-]+([\w- .\/?%&=]*)?$/ 错误是“char类错误中的空范围”。 我找到了原因([\w- .\/?%&=]*)? 部分。 Ruby似乎认识到了-在\w- . 作为范围的运算符而不是字面值- 。 在向破折号添加转义后,问题就解决了。 但最初的正则表达式在我的同事的机器上运行良好。 我们使用相同版本的osx,rails和ruby:Ruby版本是ruby 1.9.3p194,rails是3.1.6,osx是10.7.5。 在我们将代码部署到我们的Heroku服务器之后,一切都运行良好。 为什么我的环境只有这个正则表达式的错误? Ruby正则表达式解释的机制是什么?