OS X是否安装了/ etc / irbrc? irb读了吗?

时间:2016-06-03 14:51:19

标签: ruby macos irb

在调查我的Mac上的irb问题时(OS X 10.11.5),我注意到/etc/irbrc。前几行如下:

# Some default enhancements/settings for IRB, based on
# http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks

unless defined? ETC_IRBRC_LOADED

  # Require RubyGems by default.
  require 'rubygems'

  # Activate auto-completion.
  require 'irb/completion'

# continued ...

它似乎已经过时了(rubygarden.org已经消失了,这些天rubygems已经出现在标准库中了)并做了我一直认为必须在我自己的~/.irbrc做的事情(设置完成,历史等。)。

日期为2016年1月31日。我可能会或可能不会在该日期运行Apple系统更新或升级其他内容;我不记得了。从那以后,我肯定已经将OS X升级了一两个主要版本。

我认为除了OS X和安装了rbenv的Ruby 2.3.1(在我自己的帐户中,而不是root用户)之外,我在这台计算机上没有安装任何Rubies。也就是说,我不认为这个文件可能来自OS X以外的任何东西。

Unix shell约定会让我期望当任何用户运行irb时会执行一个名为/etc/irbrc的文件,如果他们有~/.irbrc,则会在puts 1之前执行。但是,OS X安装的irb似乎没有读取此文件:我将/etc/irbrc置于顶部,并且在运行irb时看不到结果。 (我通常使用rbenv,但在调查此文件时禁用它。)~/.irbrc似乎无法运行,无论我是否有/usr/bin/irb。另外,我在/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/irb~/.irbrc中看不到此文件的提及。

我猜是这个文件

  • 由OS X
  • 安装
  • 不是由irb原样读取的(尽管它具有误导性的名称和位置),但是打算复制到~/.irbrc

有没有人确切知道,或者知道有什么不同?

我不需要或不想要它;我很高兴维持自己的Private Sub CommandButton1_Click() 'Step 1: Declare your variables Dim MyDatabase As DAO.Database Dim MyQueryDef As DAO.QueryDef Dim MyRecordset As DAO.Recordset 'Step 2: Identify the database and query Set MyDatabase = DBEngine.OpenDatabase _ ("\\prd\ZipCode_Tools.accdb") Set MyQueryDef = MyDatabase.QueryDefs("Query Zip Code & Market Seg") 'Step 3: Define the Parameters With MyQueryDef .Parameters("[Enter ZipCode]") = Range("D2").Value .Parameters("[Enter Market Seg]") = Range("D3").Value End With 'Step 4: Open the query Set MyRecordset = MyQueryDef.OpenRecordset 'Step 5: Clear previous contents Sheets("MySheet").Select ActiveSheet.Range("A6:F10000").ClearContents 'Step 6: Copy the recordset to Excel ActiveSheet.Range("A6").CopyFromRecordset MyRecordset 'Step 7: Add column heading names to the spreadsheet 'For i = 1 To MyRecordset.Fields.Count 'ActiveSheet.Cells(5, i).Value = MyRecordset.Fields(i - 1).Name 'Next i ' MsgBox "Your Query has been Run" End Sub 。我只是想确保它在运行时不会影响irb(特别是我通常使用的rbenv安装的Ruby中的irb),并且未来的OS X升级不会改变irb行为。

1 个答案:

答案 0 :(得分:5)

根据Mark Setchell和Jared Beck的评论,/ etc / irbrc与当前(10.13)OS X一起安装,至少已有几个主要版本。

我将/ etc / irbrc复制到〜/ .irbrc,运行irb,退出并出错:undefined method 'nitems' for ["exit"]:Array (NoMethodError)。这个方法存在于Ruby 1.8中,但已从Ruby 1.9中删除。我通常不会看到这个错误,因此我得出结论,/ etc / irbrc根本没有执行。

总的来说,我总结说在调试〜/ .irbrc问题时我可以忽略/ etc / irbrc,这是我问题的根源。