首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails irb默认目录

Rails irb默认目录
EN

Stack Overflow用户
提问于 2010-09-21 10:00:58
回答 2查看 4.7K关注 0票数 6

我试图在运行irb时包含一个源代码文件,但是irb无法找到它。

例如,假设我位于终端中的以下目录中:

代码语言:javascript
复制
/dan/rubyapp/

假设我在/dan/rubyapp/中有一个名为"firstapp.rb“的文件

我启动irb,并在irb提示符中键入

代码语言:javascript
复制
> require "firstapp.rb"

但文件找不到。如果我输入"Dir.pwd“,它显示为

代码语言:javascript
复制
/dan/rubyapp/

唯一能让“要求”工作的方法是,如果我包含这样的完整路径。

代码语言:javascript
复制
> require "/dan/rubyapp/firstapp.rb"

只有这样我才能让它起作用吗?我在网上看到的所有教程都只是“需要file_name”,所以我假设它会起作用。

以下是$的输出: at

代码语言:javascript
复制
ruby-1.9.2-p0 > $:
 => ["/Users/Daniel/.rvm/gems/ruby-1.9.2-p0/gems/wirble-0.1.3/bin", 
"/Users/Daniel/.rvm/gems/ruby-1.9.2-p0/gems/wirble-0.1.3/lib", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.4.0", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby/1.9.1", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.4.0", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1",     
"/Users/Daniel/.rvm/rubies/ruby-
1.9.2-p0/lib/ruby/1.9.1/x86_64-darwin10.4.0"] 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-21 10:43:40

有几件事要尝试:

1)从需求的末尾删除.rb,这样您就有了:

代码语言:javascript
复制
require 'firstapp'

您通常不会将.rb添加到一个需求(只添加到一个负载)-查看这里的更多细节:http://www.fromjavatoruby.com/2008/10/require-vs-load.html

2)如果失败,请确保当前目录位于加载路径上--在irb中执行:

代码语言:javascript
复制
 p $:

它将打印出您的红宝石加载路径-检查一个条目为“。(我的是最后一条)

票数 2
EN

Stack Overflow用户

发布于 2011-01-18 21:54:48

问题是当前的工作目录不再在您的路径中(从Ruby1.9.2开始)。解决这个问题有几种不同的方法。

1)在ruby文件本身中,可以使用require_relative方法而不是require方法。这将加载相对于包含require_relative方法:http://extensions.rubyforge.org/rdoc/classes/Kernel.html的文件的loaction的文件。

代码语言:javascript
复制
require_relative 'firstapp.rb'

然而,这在irb中是行不通的。

2)另一个选项是将当前路径包含在对require方法的参数中。这将在irb或红宝石文件中工作。例如:

代码语言:javascript
复制
require './firstapp.rb'

这在ruby中实现的原因是,如果路径中的不同目录中有不同的同名文件(类似于*nix不包含当前目录),则避免无意中要求错误的文件“。在它的道路上)

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

https://stackoverflow.com/questions/3759179

复制
相关文章

相似问题

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