标签: irb

你可以在每个命令上自动"在irb会话中"要求'ruby文件吗?

我正在编辑一个文件,我正在使用irb来测试api:

> require './file.rb'
> o = Object.new
> o.method
Run Code Online (Sandbox Code Playgroud)

然后我希望能够编辑file.rb,并能够立即看到更改.示例:假设我第一次需要file.rb时new_method不存在:

> o.new_method
Run Code Online (Sandbox Code Playgroud)

哪个会返回错误.是否有沙箱/开发人员模式或方法,我可以实现上述方法,而无需每次都重新加载文件?无论如何,在第一次要求后,要求将无法工作.我假设最坏的情况我不得不使用负载.

ruby irb

10
推荐指数
2
解决办法
1万
查看次数

rails console pry/irb在显示长值/字符串后"卡住"

我正在使用rails控制台通过pry/irb在mac上开发rails.

当我在控制台中显示长结果时.Model.all或.really_long_string,我似乎无法通过显示的字符串或值,控制台在控制台的末尾显示"(END)".

我用什么命令来解决这个问题所以我可以继续在控制台上输入ruby语句,而不必关闭终端窗口?

我最近发现Ctrl Z关闭控制台,但我认为有更好的方法

irb ruby-on-rails-3 pry

10
推荐指数
1
解决办法
1797
查看次数

如何将Readline支持编译到Ruby中

我的ruby版本是用editline(在os x上)编译的,我错过了readlinein 的功能irb.

如何用readline支持重新编译ruby ?

ruby irb readline

9
推荐指数
1
解决办法
5723
查看次数

如何从rake任务启动IRB控制台?

我正在尝试编写一个rake任务,它将设置一个镜像我的项目的环境.

task :environment do 
  require 'rubygems'
  require 'sequel'
  # require 'my_projects_special_files'
end

task :foo => [:environment] do
  require 'irb'
  IRB.start
end
Run Code Online (Sandbox Code Playgroud)

导致irb抱怨"foo"不存在(任务的名称)

10:28:01:irb_test >> rake foo --trace
(in /Users/mwlang/projects/personal/rake/irb_test)
** Invoke foo (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute foo
rake aborted!
No such file or directory - foo
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `initialize'
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `open'
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `initialize'
/opt/local/lib/ruby/1.8/irb/context.rb:80:in `new'
/opt/local/lib/ruby/1.8/irb/context.rb:80:in `initialize'
/opt/local/lib/ruby/1.8/irb.rb:92:in `new'
/opt/local/lib/ruby/1.8/irb.rb:92:in `initialize'
/opt/local/lib/ruby/1.8/irb.rb:57:in `new'
/opt/local/lib/ruby/1.8/irb.rb:57:in `start'
/Users/mwlang/projects/personal/rake/irb_test/Rakefile:9

ruby rake irb

9
推荐指数
1
解决办法
5139
查看次数

IRB的IRB模拟-i

我想使用IRB运行脚本然后给我一个交互式提示.我python -i xy.py在Python中执行此操作,但irb xy.rb在执行后退出.

> python --help

-i    When a script is passed as first argument or the -c option is
      used, enter interactive mode after executing the script or the
      command
Run Code Online (Sandbox Code Playgroud)

ruby irb

9
推荐指数
1
解决办法
2879
查看次数

Ruby 1.9.2:irb throws ArgumentError:输入德语变音时,UTF-8中的字节序列无效

我想在我的irb中输入德国的变形金刚但得到一个奇怪的错误.我可以输入任何äöü没有问题的字符,但每个都会ÄÖÜß导致以下错误:

$ irb
ruby-1.9.2-p136 :001 > ? # here I entered Ü but it displays only ?
/Users/lorenz/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/irb/ruby-lex.rb:728:in
`block in lex_int2': invalid byte sequence in UTF-8 (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

我看过很多关于Ruby,rvm和UTF-8的SO问题,但都没有帮助.大多数都绑定到rails或数据库配置.我特意检查了以下内容:

语言环境设置正确

$ locale
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"
Run Code Online (Sandbox Code Playgroud)

Terminal.app设置为Unicode(UTF-8)并正确设置Encoding.default_external:

$ irb
ruby-1.9.2-p136 :001 > Encoding.default_external
 => #<Encoding:UTF-8>
Run Code Online (Sandbox Code Playgroud)

为什么在Ruby中这仍然很难?

ruby macos irb utf-8

9
推荐指数
1
解决办法
4279
查看次数

在irb中重新加载rubygems?

我现在有这个脚本.

def r(this)
  require this
  puts "#{this} is now loaded."
rescue LoadError
  puts "The gem '#{this}' is missing."
  puts "Should I install it? [y/n]"
  data = gets
  if data =~ /yes|y/i
    puts "Installing #{this}, hold on."
    if `gem install #{this}` =~ /Successfully/i
      load this
    end
  else
    puts "Okey, goodbye."
  end
end
Run Code Online (Sandbox Code Playgroud)

这使得可以动态地需要库.像这样:r "haml".

问题是我无法在安装后加载gem.使用load thisload File.expand_path("~/.irbrc")不工作.

这是一个例子.

>> r "absolutize"
The gem 'absolutize' is missing.
Should I install it? [y/n]
y
Installing absolutize, hold …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems irb

9
推荐指数
1
解决办法
2954
查看次数

IRB不将点(.)视为分词符

我在OS X上使用irb,当我按左/右选项(或META + B/F)时,光标移动到下一个/上一个单词.但irb并不会将点(.)字符视为单词分隔符.

我试图将(.)添加到.irbrc,所以它现在看起来像这样:

Readline.basic_word_break_characters = " \t\n`><=.;|&{("
Run Code Online (Sandbox Code Playgroud)

但那没有效果.

我使用的是Mountain Lion红宝石,以及手动编译的1.9.3,两种版本的irb表现相似.此外,dot在bash和pry中被视为分隔符,因此系统范围的设置可能很好.

任何帮助,赞赏,

谢谢

ruby irb

9
推荐指数
1
解决办法
254
查看次数

如何在Ruby中动态创建局部变量?

我试图在Ruby中动态创建局部变量使用eval并改变局部变量数组.我在IRB这样做.

eval "t = 2"
local_variables # => [:_]
eval "t"
# => NameError: undefined local variable or method `t' for main:Object
local_variables << "t".to_sym # => [:_, :t]
t
# => NameError: undefined local variable or method `t' for main:Object
Run Code Online (Sandbox Code Playgroud)

ruby irb

9
推荐指数
3
解决办法
3761
查看次数

要求命令在Snow Leopard上的bash irb中不起作用

我正在研究Zed Shaw的"学习Ruby艰苦之路"练习25

http://ruby.learncodethehardway.org/ex25.html

当我导航到保存ruby文件ex25.rb的目录并启动IRB时,我收到以下错误:

Larson-2:~ larson$ cd Ruby
Larson-2:Ruby larson$ ls
ex25.rb
Larson-2:Ruby larson$ irb
ruby-1.9.2-p290 :001 > require 'ex25'
LoadError: no such file to load -- ex25
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from (irb):1
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
ruby-1.9.2-p290 :002 > 
Run Code Online (Sandbox Code Playgroud)

似乎require命令在这里不起作用.有什么我想念的吗?

我也尝试按照建议要求'./25'并得到以下错误:

Larson-2:Ruby larson$ irb
ruby-1.9.2-p290 :001 > require './ex25'
SyntaxError: /Users/larson/Ruby/ex25.rb:1: invalid multibyte char (US-ASCII)
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from (irb):1
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

ruby irb learn-ruby-the-hard-way

8
推荐指数
1
解决办法
9036
查看次数