标签: ruby

Ruby中不同的括号是什么意思?

在Ruby中,{}和之间有什么区别[]

{} 似乎用于代码块和哈希.

[]只为数组?

文件不是很清楚.

ruby syntax

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

Mongoid或MongoMapper?

我已经尝试了MongoMapper,它功能齐全(提供几乎所有AR功能),但我对使用大型数据集时的性能不是很满意.有没有人比较Mongoid?任何性能提升?

ruby mongodb mongomapper mongoid odm

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

在Ruby块中使用'return'

我正在尝试将Ruby 1.9.1用于嵌入式脚本语言,以便"最终用户"代码在Ruby块中编写.这个问题的一个问题是我希望用户能够在块中使用'return'关键字,因此他们不需要担心隐式返回值.考虑到这一点,这是我希望能够做到的事情:

def thing(*args, &block)
  value = block.call
  puts "value=#{value}"
end

thing {
  return 6 * 7
}
Run Code Online (Sandbox Code Playgroud)

如果我在上面的例子中使用'return',我会得到一个LocalJumpError.我知道这是因为有问题的块是Proc而不是lambda.如果我删除'return',代码就可以工作,但我真的更喜欢在这种情况下使用'return'.这可能吗?我已经尝试将块转换为lambda,但结果是一样的.

ruby lambda return proc-object

83
推荐指数
3
解决办法
5万
查看次数

gem安装权限问题

qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.
Run Code Online (Sandbox Code Playgroud)

当前的登录用户是qichunren,而qichunre用户有.gem dir的写权限.我想知道为什么gem不能将文件安装到我家.gem dir中?为什么我的gem常见的第一个想要将文件安装到/opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

ruby gem ruby-on-rails

83
推荐指数
3
解决办法
7万
查看次数

如何从两个大小相同的数组中构建Ruby哈希?

我有两个数组

a = [:foo, :bar, :baz, :bof]
Run Code Online (Sandbox Code Playgroud)

b = ["hello", "world", 1, 2]
Run Code Online (Sandbox Code Playgroud)

我想要

{:foo => "hello", :bar => "world", :baz => 1, :bof => 2}
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

ruby arrays hash

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

如何动态获取方法的源代码以及此方法所在的文件

我想知道我是否可以动态获取源代码源代码,以及我是否可以获取此方法的文件.

喜欢

A.new.method(:a).SOURCE_CODE
A.new.method(:a).FILE
Run Code Online (Sandbox Code Playgroud)

ruby

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

为什么我不能使用RVM在Lion上安装Rails?

我正在尝试使用RVM在OS X Lion上安装Rails的问题.

到目前为止,我已经完成了以下工作:

  1. 安装了Mac OS X Lion版本10.7(Build 11A459e).
  2. 安装了XCode 4.1 Developer Preview 5.
  3. 已安装的RVM.
  4. 使用该命令通过RVM安装了1.8.7版本的Ruby rvm install 1.8.7.注意:我需要使用1.8.7而不是1.9.2.
  5. 使用该命令切换到1.8.7版本的Ruby rvm 1.8.7.
  6. 使用该命令创建了一个新的gemset rvm gemset create rails3.
  7. 使用该命令切换到新的gemset rvm use 1.8.7@rails3.
  8. 要安装Rails,我运行了命令,gem install rails但是我收到以下错误:

    /Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [BUG]分段错误

尝试运行任何gem命令时会发生同样的错误,所以我认为这不是Rails的问题.

从下面的链接来看,我似乎并不是唯一有这个问题的人:

http://twitter.com/#!/pingles/status/66261101351927809https://github.com/carlhuda/bundler/issues/1058

ruby macos ruby-on-rails rvm

83
推荐指数
5
解决办法
3万
查看次数

如何在Ruby中获取数组的最后一个元素?

例:

a = [1, 3, 4, 5]
b = [2, 3, 1, 5, 6]
Run Code Online (Sandbox Code Playgroud)

如何在不使用和的情况下获取5数组中的最后一个值a或数组中的最后一个值?6ba[3]b[4]

ruby arrays

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

检查两个数组是否具有相同的内容(按任何顺序)

我正在使用带有Rails 1.2.3的Ruby 1.8.6,并且需要确定两个数组是否具有相同的元素,无论它们是否处于相同的顺序.保证其中一个数组不包含重复项(另一个可能,在这种情况下答案是否定的).

我的第一个想法是

require 'set'
a.to_set == b.to_set
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更有效或惯用的方式.

ruby arrays comparison

83
推荐指数
8
解决办法
6万
查看次数

在RoR 4中使用验证的正则表达式

有以下代码:

class Product < ActiveRecord::Base
  validates :title, :description, :image_url, presence: true
  validates :price, numericality: {greater_than_or_equal_to: 0.01}
  validates :title, uniqueness: true
  validates :image_url, allow_blank: true, format: {
      with: %r{\.(gif|jpg|png)$}i,
      message: 'URL must point to GIT/JPG/PNG pictures'
  }
end
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我尝试使用"rake test"测试它时,我会收到这条消息:

rake aborted!
The provided regular expression is using multiline anchors (^ or $), which may present a security risk. Did you mean to use \A and \z, or forgot to add the :multiline => true option?
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我该如何解决?

ruby activerecord ruby-on-rails

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