Questions tagged «ruby»

Ruby是由松本行弘(Matz)于1995年创建的一种多平台开放源代码,动态的,面向对象的解释性语言。[ruby]标记用于与Ruby语言有关的问题,包括其语法和库。Ruby on Rails问题应标记为[ruby-on-rails]。

25
应该警告新手的Ruby Gotchas是什么?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我最近学习了Ruby编程语言,总而言之,它是一门好语言。但是令我惊讶的是,它并不像我期望的那么简单。更准确地说,“最小惊喜规则”在我看来并不十分受人尊敬(当然,这是非常主观的)。例如: x = true and false puts x # displays true! 和著名的: puts "zero is true!" if 0 # zero is true! 您会警告Ruby新手的其他“陷阱”是什么?
108 ruby 


11
Ruby / Rails-更改时间的时区,而不更改值
我foo在数据库中有一个具有:start_time和:timezone属性的记录。 例如,这:start_time是UTC-中的时间2001-01-01 14:20:00。例如,:timezone是字符串- America/New_York。 我想创建一个新的Time对象,其值为,:start_time但其时区由指定:timezone。我不想加载:start_time,然后转换为:timezone,因为Rails会很聪明,并且将UTC的时间更新为与该时区一致。 目前, t = foo.start_time => 2000-01-01 14:20:00 UTC t.zone => "UTC" t.in_time_zone("America/New_York") => Sat, 01 Jan 2000 09:20:00 EST -05:00 相反,我想看看 => Sat, 01 Jan 2000 14:20:00 EST -05:00 即。我想要做: t => 2000-01-01 14:20:00 UTC t.zone = "America/New_York" => "America/New_York" t => 2000-01-01 14:20:00 EST

14
如何比较两个散列?
我正在尝试使用以下代码比较两个Ruby哈希: #!/usr/bin/env ruby require "yaml" require "active_support" file1 = YAML::load(File.open('./en_20110207.yml')) file2 = YAML::load(File.open('./locales/en.yml')) arr = [] file1.select { |k,v| file2.select { |k2, v2| arr << "#{v2}" if "#{v}" != "#{v2}" } } puts arr 屏幕上的输出是file2中的完整文件。我知道文件是不同的,但是脚本似乎并没有选择它。
108 ruby  hash 

17
如何在Rails中设置默认值?
我正在尝试找到在Rails中为对象设置默认值的最佳方法。 我能想到的最好的new方法是在控制器的方法中设置默认值。 如果这是可以接受的,或者有更好的方法可以进行,那么有人可以提供任何输入吗?

9
Ruby中的私有模块方法
我有一个两部分的问题 最佳实践 我有一个使用公用接口对数据结构执行某些操作的算法 当前,它是具有许多静态方法的模块,除了一个公共接口方法外,所有方法都是私有的。 所有方法之间都需要共享一个实例变量。 这些是我可以看到的选项,哪个是最好的?: 模块与静态(红宝石“模块”)的方法 带有静态方法的类 Mixin模块,用于包含在数据结构中 重构算法中修改该数据结构的部分(非常小),并使之混合,从而调用算法模块的静态方法 技术部分 有什么方法可以使私有Module方法吗? module Thing def self.pub; puts "Public method"; end private def self.priv; puts "Private method"; end end 将private在那里似乎没有任何效果,我仍然可以调用Thing.priv没有问题。

9
如何在Mac上将Ruby更新到1.9.x?
我在Mac上创建了一个新的用户帐户,并且尝试从雪豹默认值1.8.7更新到它的当前版本的ruby(1.9.2)。有人可以指出我的教程或解释将Mac上的Ruby从1.8更新到1.9.2的最佳方法吗?谢谢
107 ruby  macos  installation 


2
Rails模块中的mattr_accessor是什么?
我在Rails文档中找不到真正的东西,但似乎'mattr_accessor'是普通Ruby 类中'attr_accessor'(getter&setter)的模块推论。 例如。在课堂上 class User attr_accessor :name def set_fullname @name = "#{self.first_name} #{self.last_name}" end end 例如。在一个模块中 module Authentication mattr_accessor :current_user def login @current_user = session[:user_id] || nil end end 此辅助方法由ActiveSupport提供。

15
“找不到捆绑器”错误
当我尝试执行bundler update此操作时,出现以下错误: .rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [rake-0.8.7, rake-0.8.7, rubygems-update-1.8.4] (Gem::LoadError) 我是Ruby的新手,有人可以告诉我这是什么原因吗?Rake 0.8.7已安装。

13
安装带有ruby支持的vim(+ ruby​​)
我正在尝试为vim安装command-t,但是我当前的vim版本没有(+ ruby​​)标志。命令“哪个红宝石”表明已安装红宝石。 为了激活vim中的+ ruby​​标志,我需要做什么? 另外,+ ruby​​标志在技术上是什么意思?
107 ruby  vim 


5
在红宝石中捕获Ctrl-c
我通过了一个长期运行的旧式红宝石程序,该程序多次出现 begin #dosomething rescue Exception => e #halt the exception's progress end 整个过程。 在不跟踪每个可能的异常的情况下(至少不是立即),我仍然希望能够使用有时将其关闭CtrlC。 而且我想这样做的方式只会增加代码(这样我就不会影响现有行为,也不会在运行过程中遗漏否则捕获的异常)。 [ CtrlC是SIGINT或SystemExit,它似乎与SignalException.new("INT")Ruby的异常处理系统等效。class SignalException < Exception,这就是为什么出现此问题的原因。] 我想写的代码是: begin #dosomething rescue SignalException => e raise e rescue Exception => e #halt the exception's progress end 编辑:此代码有效,只要您获取要捕获正确的异常的类。可以是SystemExit,Interrupt或IRB :: Abort,如下所示。

5
在Rails的路由资源中更改:id参数的名称
我环顾了一下如何更改动态params插槽,并发现了此帖子确实有用。帖子是https://thoughtbot.com/blog/rails-patch-change-the-name-of-the-id-parameter-in 如果遵循以下路线,基本上就是这样做: map.resources :clients, :key => :client_name do |client| client.resources :sites, :key => :name do |site| site.resources :articles, :key => :title end end 这些路由创建以下路径: /clients/:client_name /clients/:client_name/sites/:name /clients/:client_name/sites/:site_name/articles/:title 一种解决方案是重写def to_param模型中的方法,但我希望这样做而无需接触模型本身。 但是,由于它适用于Rails 2.x,我如何在Rails 3上实现相同的目的? 更新资料 这个程序正在使用Mongoid。不是AR。因此,宝石友好型不能用于afaik。

14
Ruby:如何将字符串转换为布尔值
我的值将是以下四项之一:布尔值true,布尔值false,字符串“ true”或字符串“ false”。我想将字符串转换为布尔值(如果是字符串),否则将其保持不变。换一种说法: “真实”应变为真实 “假”应该变成假 true应该保持true 错误应保持错误

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.