Tag: ruby 1.9.3

确保父进程终止时孤立进程被终止

在Ruby中,我如何确保从我的程序中生成的子进程在主进程退出或被杀死时不继续运行? 最初我以为我可以在主进程中使用at_exit ,但是如果我的主进程被kill -9 ed或者调用Kernel.exec ,这将Kernel.exec 。 我需要一个(基本上)万无一失的跨平台解决方案。

使用Rvm安装Ruby 1.9.3时出现问题

我正在尝试使用本指南安装ruby 1.9.3: http : //www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/ 。 当我运行rvm install 1.9.3我收到此错误 Searching for binary rubies, this might take some time. No binary rubies available for: osx/10.8/x86_64/ruby-1.9.3-p392. Continuing with compilation. Please read ‘rvm mount’ to get more information on binary rubies. Installing requirements for osx, might require sudo password. Skipping `brew update` make sure your formulas are up […]

如果不是nil而不是空,则合并数组

Ruby中有一些数组(这种情况下有4个数组) array1 = [{key=”label1.1″, value=”label1.2″}, {key=”label1.2″, value=”label1.2″}] array2 = [{key=”label2.1″, value=”label2.2″}] array3 = [] array4 = nil result_array = array1 | array2 | array3 | array4 每个数组都具有与其他数组相同的结构:它是哈希值。 它中有多少元素,如果它是零或空的 – 它是未知的。 所以我需要result_array来看: [{key=”label1.1″, value=”label1.2″}, {key=”label1.2″, value=”label1.2″}, {key=”label2.1″, value=”label2.2″}] 但是,该代码将导致exception,因为array4等于nil 。 是否有任何Ruby方法来检查数组是否为空且不为空,如果是,则将其合并到result_array ?

在没有rails的ruby中实现rails before_filter

我在所有课程中使用ga logger。 我希望每个msg都以类名和方法名开头,如下所示: Class_name::Method_name 这就是我现在正在做的事情: class FOO def initialize end def bar msg_prefix = “#{self.class}::#{__method__}” … some code … @logeer = “#{msg_prefix} msg …” end def bar2 msg_prefix = “#{self.class}::#{__method__}” … some code 2 … @logeer = “#{msg_prefix} msg2 …” end end 我想使用像rails中的before_filter来防止两面性,我使用sinatra但是这些类是普通的老ruby 1.9.3类 想法?

Bundler无法找到gem的兼容版本,更新Rails应用程序

创建一个全新的rails应用程序之后在官方rails博客文章后 ,尝试将应用程序转换为rails 3.2.0.rc2会产生以下结果 Updated Gemfile to depend on rails ~> 3.2.0.rc2 gem ‘rails’, ‘~>3.2.0.rc2’ Updated Gemfile to depend on sass-rails ~> 3.2.3 gem ‘sass-rails’, ‘~> 3.2.3’ $ bundle install Fetching source index for http://rubygems.org/ Bundler could not find compatible versions for gem “activesupport”: In snapshot (Gemfile.lock): activesupport (3.1.1) In Gemfile: rails (~> 3.2.0.rc2) ruby depends […]

如何在Heroku上找到内存泄漏?

我有一个使用Ruby 1.9.3在Heroku Cedar上运行的Rails 3.2.8应用程序。 该应用程序在启动时运行良好,但经过一天左右的连续使用后,我开始在日志中看到R14错误。 一旦内存错误开始,即使应用程序闲置几个小时,它们也永远不会消失。 垃圾收集器不应该在一段时间后清理未使用的对象并减少内存负载吗? 似乎Heroku上没有发生这种情况。 通常,在运行一些包含数千行数据的报告后,内存使用率开始上升,尽管结果是分页的。 我怎样才能找到内存泄漏? 像bleak_house这样的插件已经过时了,或者在Heroku环境中运行得不好。 我可以调整GC设置以使其更具侵略性吗?

哈希中的ActiveRecord对象不是垃圾收集 – 一个错误或一种缓存function?

我有一个名为Student的简单ActiveRecord模型,表中包含100条记录。 我在rails控制台会话中执行以下操作: ObjectSpace.each_object(ActiveRecord::Base).count # => 0 x = Student.all ObjectSpace.each_object(ActiveRecord::Base).count # => 100 x = nil GC.start ObjectSpace.each_object(ActiveRecord::Base).count # => 0 # Good! 现在我做以下事情: ObjectSpace.each_object(ActiveRecord::Base).count # => 0 x = Student.all.group_by(&:last_name) ObjectSpace.each_object(ActiveRecord::Base).count # => 100 x = nil GC.start ObjectSpace.each_object(ActiveRecord::Base).count # => 100 # Bad! 任何人都可以解释为什么会发生这种情况,是否有一种聪明的方法来解决这个问题而不知道底层哈希结构 我知道我可以这样做: x.keys.each{|k| x[k]=nil} x = nil GC.start 它会正确地从内存中删除所有的Student对象,但我想知道是否有一个通用的解决方案(我的现实问题是广泛传播,并且具有比上面显示的散列更复杂的数据结构)。 我正在使用Ruby […]

Ruby 1.9.3 Teeny Version

当使用RBConfig来确定我的ruby版本时,在使用ruby 1.9.3时我得到了“错误”的小版本: # ruby -v ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux] # ruby -rrbconfig -e ‘puts RbConfig::CONFIG.fetch(%q(MAJOR))’ 1 # ruby -rrbconfig -e ‘puts RbConfig::CONFIG.fetch(%q(MINOR))’ 9 # ruby -rrbconfig -e ‘puts RbConfig::CONFIG.fetch(%q(TEENY))’ 1 使用Ruby 1.8.7 – 这很好用: $ ruby -v ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux] $ ruby -rrbconfig -e ‘puts Config::CONFIG.fetch(%q(MAJOR))’ 1 $ ruby -rrbconfig […]

前瞻和后视概念如何在Ruby的Regex中支持这种零宽度断言概念?

我刚刚从文档中了解了Zero-Width Assertions的概念。 一些快速问题进入我的脑海 – 为什么这样的名字Zero-Width Assertions ? Look-ahead和后look-behind概念如何支持这种Zero-Width Assertions概念? 那是什么?<=s , <!s , =s , <=s – 4个符号在模式中指示? 你能帮助我在这里专注于了解实际发生的事情 我也尝试了一些微小的代码来理解逻辑,但对那些输出没有那么自信: irb(main):001:0> “foresight”.sub(/(?!s)ight/, ‘ee’) => “foresee” irb(main):002:0> “foresight”.sub(/(?=s)ight/, ‘ee’) => “foresight” irb(main):003:0> “foresight”.sub(/(? “foresee” irb(main):004:0> “foresight”.sub(/(? “foresight” 谁能帮助我在这里理解? 编辑 在这里,我尝试了两个片段,其中“Zero-Width Assertions”概念如下: irb(main):002:0> “foresight”.sub(/(?!s)ight/, ‘ee’) => “foresee” 另一个没有“零宽度断言”概念如下: irb(main):003:0> “foresight”.sub(/ight/, ‘ee’) => “foresee” 以上两者都产生相同的输出,现在内部两个正则regexp由它们自己移动以产生输出 – 你能帮我形象化吗? 谢谢

OpenSSL在Ruby 1.9.3中遇到麻烦

我在Ubuntu 12.04上遇到了OpenSSL 1.0.1 + Ruby 1.9.3的半严重问题。 所有ruby都安装了rvm require ‘uri’ require ‘net/http’ require ‘net/https’ endpoint = “https://secure.mmoagateway.com/api/transact.php” RUBY_184_POST_HEADERS = { “Content-Type” => “application/x-www-form-urlencoded” } body = “orderid=ae5dd847d9f31209cbffeeea076ed966&orderdescription=Active+Merchant+Remote+Test+Purchase&ccnumber=4111111111111111&ccexp=0913&cvv=123&company=Widgets+Inc&address1=1234+My+Street&address2=Apt+1&city=Ottawa&state=ON&zip=K1C2N6&country=CA&phone=%28555%29555-5555&firstname=&lastname=&email=&amount=1.00&type=auth&username=demo&password=password” headers = {} endpoint = endpoint.is_a?(URI) ? endpoint : URI.parse(endpoint) http = Net::HTTP.new(endpoint.host, endpoint.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE http.set_debug_output(STDOUT) result = http.post(endpoint.request_uri, body, RUBY_184_POST_HEADERS.merge(headers)) puts(result) 在Ubuntu 12.04 […]