标签: ruby

Ruby - Array中的唯一元素

我有一个包含一些元素的数组.如何才能获得数组中每个元素的出现?

例:

鉴于:

a = ['cat', 'dog', 'fish', 'fish']
Run Code Online (Sandbox Code Playgroud)

结果:

a2 #=> {'cat' => 1, 'dog' => 1, 'fish' => 2}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

ruby arrays

33
推荐指数
6
解决办法
3万
查看次数

"影子"在Ruby中意味着什么?

如果我执行以下操作并在Ruby 1.9下打开警告:

$VERBOSE = true
x = 42
5.times{|x| puts x}
Run Code Online (Sandbox Code Playgroud)

我明白了

warning: shadowing outer local variable - x
Run Code Online (Sandbox Code Playgroud)

据推测,这与使用x作为块参数以及块外的变量有关,但"阴影"是什么意思?

ruby shadow

33
推荐指数
2
解决办法
8966
查看次数

Ruby Gem中未初始化的常量Rake :: DSL

我一直在努力更新我的宝石(https://github.com/ivanoats/whm_xml_api_ruby上的 whm_xml ),以使其与ruby 1.9.2,最新的rubygems,最新的捆绑包,最新的rdoc,最新的rake一起使用.它在1.8.7中工作正常,但仅在1.9.2中有"未初始化的常量Rake :: DSL"错误.我认为rake 0.9.2固定了但可能没有?我在StackOverflow上已经阅读了很多,但仍然被卡住了.关于在哪里看的任何想法?

ivan:~/Development/ruby/whm_xml_api_ruby [git:master+]  ? bundle exec rake -T
(in /Users/ivan/Development/ruby/whm_xml_api_ruby)
rake aborted!
uninitialized constant Rake::DSL
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/tasklib.rb:6:in `<module:Rake>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/lib/rake/tasklib.rb:3:in `<top (required)>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rdoc-3.6.1/lib/rdoc/task.rb:37:in `require'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rdoc-3.6.1/lib/rdoc/task.rb:37:in `<top (required)>'
/Users/ivan/Development/ruby/whm_xml_api_ruby/Rakefile:3:in `require'
/Users/ivan/Development/ruby/whm_xml_api_ruby/Rakefile:3:in `<top (required)>'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2373:in `load'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2058:in    `standard_exception_handling'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/Users/ivan/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/rake.rb:1991:in `run'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.9.2/bin/rake:32:in `<top (required)>'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `load'
/Users/ivan/.rvm/gems/ruby-1.9.2-p180/bin/rake:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)

ruby rake gem rubygems

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

什么都不知道......在尝试ri String#upcase Ruby时

我刚刚安装了RVM,而且我正在阅读The Well-Grounded Rubyist一书.在第一章中,我应该尝试ri String#upcase查看关于upcase方法的文档,但是我收到一条消息说:

没有人知道String#upcase

我在这里发现了一些帖子告诉我这可能是因为没有安装RDoc.但是我不明白如何解决它.

我使用的是Mac OSX 10.6和最新的RVM.除了标准的Ruby解释器以及Apple的Developer工具包之外,我只安装了1.9.2.

ruby rdoc ri rvm

33
推荐指数
1
解决办法
5651
查看次数

Rubygems:如何添加特定于平台的依赖项?

我有一个ruby gem,它对每个操作系统都有不同的依赖关系.我必须明确地写下所有这些:

在Mac OS X上:

gem install livereload
Run Code Online (Sandbox Code Playgroud)

在Linux上:

gem install rb-inotify livereload
Run Code Online (Sandbox Code Playgroud)

在Windows上:

gem install eventmachine-win32 win32-changenotify win32-event livereload
Run Code Online (Sandbox Code Playgroud)

我可以稍微调整一下gemspec,这样gem install livereload每个操作系统的安装说明都很简单吗?

ruby rubygems

32
推荐指数
1
解决办法
6499
查看次数

将模型划分为目录是不是一个坏主意?

我的rails应用程序中有100多个模型,只是为了组织,我将它们分成文件夹,所有这些仍然在主模型文件夹下,只是为了更简单地浏览项目并查看相关的文件.

这是一个坏主意吗?rails的方法是什么?

ruby activerecord ruby-on-rails ruby-on-rails-3

32
推荐指数
2
解决办法
5556
查看次数

在另一个模块中扩展Ruby模块,包括模块方法

每当我尝试扩展ruby模块时,我都会丢失模块方法.既不包含也不延伸都不会这样做.考虑一下片段:

module A 
  def self.say_hi
    puts "hi"
  end
end

module B 
  include A
end

B.say_hi  #undefined_method
Run Code Online (Sandbox Code Playgroud)

无论B包括还是扩展A,都不会定义say_hi.

有没有办法完成这样的事情?

ruby module

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

如何选择数组中的每个第n项?

我希望在Ruby中找到一种方法来选择数组中的每个第n项.例如,选择每一个项目将转换:

["cat", "dog", "mouse", "tiger"]
Run Code Online (Sandbox Code Playgroud)

成:

["dog", "tiger"]
Run Code Online (Sandbox Code Playgroud)

是否有Ruby方法可以这样做,还是有其他方法可以做到这一点?

我尝试过使用类似的东西:

[1,2,3,4].select {|x| x % 2 == 0}
# results in [2,4]
Run Code Online (Sandbox Code Playgroud)

但这只适用于具有整数而不是字符串的数组.

ruby ruby-on-rails

32
推荐指数
4
解决办法
3万
查看次数

在Ruby中编写DSL的教程

有关如何在Ruby中实现DSL的优秀在线教程是什么?我正在寻找解释整个过程的动手实例.

我知道在关于DSL和Ruby的好书上有这个问题:关于基于Ruby的DSL的好书.

ruby dsl

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

是否有解决方法在Ruby中打开包含下划线的URL?

我正在使用open-uri来打开URL.

resp = open("http://sub_domain.domain.com")
Run Code Online (Sandbox Code Playgroud)

如果它包含下划线,我会收到一个错误:

URI::InvalidURIError: the scheme http does not accept registry part: sub_domain.domain.com (or bad hostname?)

我理解这是因为根据RFC URL只能包含字母和数字.有没有解决方法?

ruby open-uri

32
推荐指数
4
解决办法
2万
查看次数

标签 统计

ruby ×10

ruby-on-rails ×2

rubygems ×2

activerecord ×1

arrays ×1

dsl ×1

gem ×1

module ×1

open-uri ×1

rake ×1

rdoc ×1

ri ×1

ruby-on-rails-3 ×1

rvm ×1

shadow ×1