【问题标题】:Ruby: File in same directory as main application file not being loaded in IRBRuby:与主应用程序文件位于同一目录中的文件未在 IRB 中加载
【发布时间】:2012-09-04 07:24:09
【问题描述】:

在 Sinatra 应用程序中我的主应用程序文件 (tinyclone.rb) 的顶部,此哈希用于需要多个 gem 和一个文件 'dirtywords.rb'。脏词文件与 tinyclone.rb 文件位于同一目录中。

%w(rubygems data_mapper sinatra haml dm-core dm-timestamps dm-types uri restclient xmlsimple dirty_words).each  { |lib| require lib}

当我在 irb 中加载 tinyclone.rb 文件时

require '/Users/mm/sites/cloning/tinyclone.rb'

它将所有这些文件/宝石加载到哈希中,除了dirty_words文件

cannot load such file -- dirty_words
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /Users/mm/sites/cloning/tinyclone.rb:1:in `block in <top (required)>'
    from /Users/mm/sites/cloning/tinyclone.rb:1:in `each'
    from /Users/mm/sites/cloning/tinyclone.rb:1:in `<top (required)>'
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from (irb):1
    from /Users/mm/.rvm/rubies/ruby-1.9.3-rc1/bin/irb:16:in `<main>'

谁能解释为什么不正确地需要一个文件?

【问题讨论】:

    标签: ruby-on-rails ruby sinatra irb


    【解决方案1】:

    Ruby 1.9 不包含当前目录到搜索路径中。

    有几个选项可以解决这个问题:

    # Ruby 1.9 only:
    require_relative 'dirty_words'
    
    # Ruby 1.9 and 1.8 compatible:
    require File.expand_path('dirty_words', File.dirname(__FILE__))
    
    # Both options above imply that you separate `dirty_words` from the list of libs which
    # are present in $LOAD_PATH, and require it separately. Here's another option which
    # should allow you to keep require iteration as it is, though it's considered dirty:
    $LOAD_PATH << File.dirname(__FILE__)
    

    【讨论】:

      猜你喜欢
      • 2017-03-12
      • 2019-02-10
      • 2011-04-23
      • 1970-01-01
      • 2022-10-21
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      • 2012-02-11
      相关资源
      最近更新 更多