如何在Windows中更新ruby

我通过rails安装程序下载了ruby,但我现在想要ruby 2.0.0并且已经下载了它。 我怎么更新我的ruby,因为我这样做 ruby -v 它仍然是ruby版本1.9.3。

将Rails中的主键更改为字符串

所以我有两个模型,State和Acquisition。 State has_many收购。 我觉得51个记录的自动增量整数主键是相当愚蠢的。 所以我将State的模型改为PK(State是两个字母的缩写;我没有在任何地方存储实际的州名: class State < ActiveRecord::Base self.primary_key = "state" has_many :acquisition_histories end 问题是当我创建我的Acquisition模型时,它创建了外键列state_id作为整数。 更具体地说,脚本/生成的迁移确实: class CreateAcquisitions < ActiveRecord::Migration def self.up create_table :acquisitions do |t| t.date :date t.string :category t.text :notes t.references :state t.timestamps end end end 我假设t.references数据类型将其设置为int。 问题是我的Acquisition类上的create方法试图将状态缩写放入表获取的state_id字段中(是的,它在数据库上称为state_id,即使它表示:迁移脚本中的状态)。 该方法不会失败,但它确实在state_id字段中放置了一个0并且记录进入以太。

读取和写入YAML文件而不破坏锚点和别名?

我需要打开一个YAML文件,其中包含别名: defaults: &defaults foo: bar zip: button node: <<: *defaults foo: other 这显然扩展到了一个等效的YAML文档: defaults: foo: bar zip: button node: foo: other zip: button 哪个YAML::load读取它。 我需要在这个YAML文档中设置新密钥,然后将其写回磁盘,尽可能保留原始结构。 我看过YAML :: Store ,但这完全破坏了别名和锚点。 是否有任何可用的东西: thing = Thing.load(“config.yml”) thing[:node][:foo] = “yet another” 将文档保存为: defaults: &defaults foo: bar zip: button node: <<: *defaults foo: yet another ? 我之所以选择使用YAML是因为它很好地处理了这种混叠,但是编写包含别名的YAML在现实中看起来有点像一个看起来很暗淡的游戏领域。

如何自定义rails activerecordvalidation错误消息以显示属性值

当用户尝试使用已存在的名称创建记录时,我想显示如下错误消息: name “some name” has already been taken 我一直在努力做到: validates_uniqueness_of :name, :message => “#{name} has already been taken” 但是这会输出表名而不是name属性的值

用ruby解压缩(zip,tar,tag.gz)文件

我想解压缩很多zip文件。 是否有模块或脚本检查zip文件的格式并解压缩? 这应该适用于Linux,我不关心其他操作系统。

使用ruby splat运算符在哪里合法?

Splats很酷。 它们不只是用于爆炸arrays,尽管这很有趣。 它们还可以转换为数组并压平数组(请参阅http://github.com/mischa/splat/tree/master以获取他们所做的详尽列表。) 看起来无法对splat执行额外的操作,但在1.8.6 / 1.9中,以下代码抛出“意外的tSTAR”: foo = bar || *zap #=> unexpected tSTAR 虽然这有效: foo = *zap || bar #=> works, but of limited value splat在表达式中出现在哪里?

理解Ruby中的if条件中的“||”OR运算符

简而言之,为什么以下三条线的影响不一样? if @controller.controller_name == “projects” || @controller.controller_name == “parts” if @controller.controller_name == (“projects” || “parts”) if @controller.controller_name == “projects” || “parts” 第一个给出了我想要的结果,但实际上有更多选项而不仅仅是项目和部分,使用该表单创建了一个详细的语句。 另外两个更紧凑,但不给我相同的结果。

如何在不使用Google Maps API的情况下计算两个GPS坐标之间的距离?

我想知道是否有办法计算两个GPS坐标的距离而不依赖于Google Maps API。 我的应用程序可能会收到float中的坐标,或者我必须在地址上执行反向GEO。

如何在C ++中嵌入Ruby?

将Ruby作为脚本语言嵌入C ++的最佳方法是什么? 使用ruby.h? 痛饮? 别的什么? 我需要的是将一些C ++对象暴露给Ruby并让Ruby解释器评估访问这些对象的脚本。 我不关心扩展Ruby或用C ++访问它。 我发现这篇文章是关于在C ++中嵌入Ruby的 ,虽然它非常有用,但它有点老了,我想知道是否有关于这个主题的任何其他资源(或类似引擎的开源实现)。

Ruby桌面应用程序

是否可以在ruby中创建整个应用程序并在Windows中作为exe文件运行,或作为任何操作系统上的应用程序运行?