Tag: ruby

关于Ruby中方法参数的思考

参加以下课程: class Automator def fill_specific_form(fields) fields.each_pair do |key, value| puts “Setting ‘#{key}’ to ‘#{value}'” end end end a = Automator.new a.fill_specific_form :first_name => “Mads”, :last_name => “Mobæk” # => Setting ‘first_name’ to ‘Mads’ # => Setting ‘last_name’ to ‘Mobæk’ 没有哈希可以做同样的事情吗? 由于所有参数都是必需的,我想要一个带有以下签名的方法: fill_specific_form(first_name, last_name) 在我看来,通过让方法体反映并迭代其参数,这将是可能的,从而实现相同的结果。 你会如何实现这个? 这种模式/习语是否已存在? 两个明显的好处是IDE中的参数信息,而不必检查是否提供了所有散列键。 我想避免的是: puts “Setting first_name to #{first_name}” puts “Setting […]

解释为局部变量会覆盖方法名称吗?

正如在这个问题中 ,当未定义的局部变量在其自己的赋值中使用时,它将被计算为nil 。 x = x # => nil 但是当局部变量的名称与现有方法名称冲突时,它更棘手。 为什么下面的最后一个例子返回nil ? {}.instance_eval{a = keys} # => [] {}.instance_eval{keys = self.keys} # => [] {}.instance_eval{keys = keys} # => nil

如何遍历MySQL结果集?

这是我正在使用的代码: # Run the query against the database defined in .yml file. # This is a Mysql::result object – http://www.tmtm.org/en/mysql/ruby/ @results = ActiveRecord::Base.connection.execute(@sql_query) 在我的视图中,这是我看到的值: Outputs: # Outputs: [“asdfasdf”, 23, “qwefqwef”] [“sdfgdsf”, 23, “asdfasdfasdf”] 因此,想象一下我select * from Person查询类似select * from Person ,并返回结果集,例如: ID Name Age 1 Sergio 22 2 Lazlow 28 3 Zeus 47 如何迭代每个值并输出它? 这里的文档没有用,因为我已经尝试过可能存在的方法,但是解释器给出了一个错误,说明这些方法不存在。 […]

如何在Heroku中更改列类型?

我试图将db:migrations迁移到我的heorku实例中,但是我收到错误。 FAQ描述了我的错误如下: 无法更改列类型 示例:PGError:错误:列“verified_at”无法强制转换为键入“date” 原因:PostgreSQL不知道如何将该表中的所有行强制转换为指定的类型。 很可能这意味着您在该列中有一个整数或一个字符串。 解决方案:检查您的记录并确保它们可以转换为新类型。 有时,更容易避免使用change_column,而是重命名/创建新列。 如何立即更改此迁移。 这是我的问题。 对于我的Contacts表,我创建了以下内容: t.string :date_entered 在以后的迁移中,我执行以下操作: change_column :contacts, :date_entered, :date 这个change_column似乎是个问题。 我应该……手动改变迁移吗? 有没有办法可以清理表格中的数据(我不知道Heroku会识别表格中的数据,因为我正在做耙子)。 我显然需要更改此值,并在整个应用程序中使用它。 谢谢。 这就是我想要的……想法? def self.up #change_column :contacts, :date_entered, :date #this fails in postgres, so trying the same outcome rename_column :contacts, :date_entered, :date_entered_old add_column :contacts, :date_entered, :date remove_column :contacts, :date_entered_old end def self.down add_column :contacts, […]

Unix域套接字“/var/pgsql_socket/.s.PGSQL.5432”上的PostgreSQL权限被拒绝错误 – Lion Server 10.7.3或Lion Server 10.7.4

我最近使用Lion Server遇到了主要权限问题,其中权限会随意更改文件夹。 在此期间,我在尝试执行rake db:migrate命令时开始出现以下错误: rake aborted! could not connect to server: Permission denied Is the server running locally and accepting connections on Unix domain socket “/var/pgsql_socket/.s.PGSQL.5432”? 当我在运行10.7.2时首次创建Rails 3.2.3应用程序之前,这一直在工作。 突然间,我开始出现这个错误。 我阅读了许多关于此错误的博客,并尝试删除它但没有成功。 我决定致电Apple Enterprise Support,了解我能做些什么。 我怀疑Lion Server已经损坏但是想在支持团队确认之前擦干我的服务器并重新开始。 他们证实,这是我需要做的,以便理顺它。 我在星期五做了这个,只安装了我需要重建我的Rails应用程序。 我还是得到了错误。 我再次尝试了一些已发布的其他解决方案,但仍然没有一个有效。 我们继续寻找解决方案。

ruby hash autovivification(facets)

这是一个聪明的技巧,在ruby中启用哈希自动生成(取自facet): # File lib/core/facets/hash/autonew.rb, line 19 def self.autonew(*args) leet = lambda { |hsh, key| hsh[key] = new( &leet ) } new(*args,&leet) end 虽然它有效(当然),但我发现我无法弄清楚这两个衬垫是如何做到的。 leet是一个默认值。 那么只需访问h[‘new_key’]以某种方式启动并创建’new_key’ => {} 现在,我希望h[‘new_key’]返回默认值对象而不是评估它。 也就是说, ‘new_key’ => {}不会自动创建。 那么leet实际上是如何被调用的呢? 特别是有两个参数?

即使在Ruby中IF条件求值为false时,如何创建局部变量?

在irb中尝试以下内容:(我使用的是Ruby 2.0.0-p247) blah #=> NameError: undefined local variable or method `blah’ for main:Object if false blah = ‘blah’ end #=> nil blah #=> nil 即使if条件评估为false ,我也很惊讶blah被赋值为nil 。 我认为if的代码被跳过,因为条件的计算结果为false 。 有Ruby内部知识的人能否解释一下这是怎么发生的? 谢谢

Rails 4 + Devise:无效的路由名称,已在使用中

我正在按照这个方法在注册成功后修改确认页面。 https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up-(registration) 我做的一切都像它说的但我得到这个错误: in `add_route’: Invalid route name, already in use: ‘new_user_session’ (ArgumentError) You may have defined two routes with the same name using the `:as` option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with `resources` as […]

ruby:在ruby中从float转换为integer会产生奇怪的结果

ree-1.8.7-2010.02 :003 > (10015.8*100.0).to_i => 1001579 ree-1.8.7-2010.02 :004 > 10015.8*100.0 => 1001580.0 ree-1.8.7-2010.02 :005 > 1001580.0.to_i => 1001580 ruby1.8.7产生相同的。 有谁知道如何根除这种异端邪说? =)

一切都是ruby的对象吗?

ruby中的一切都是对象吗? 这包括Fixnum吗?