Tag: ruby

如何“取消”Ruby数组?

我目前正在尝试转换这个ruby数组: [5, 7, 8, 1] 进入这个: [[5], [7], [8], [1]] 什么是最好的方式? 我现在这样做: [5, 7, 8, 1].select { |element| element }.collect { |element| element.to_a } 但是我收到以下错误: 警告:默认`to_a’将过时 我究竟做错了什么? 能否请您就如何做到这一点提出建议? 在此先感谢您的问候!

是否有人使用Ruby 1.9.1成功部署了Rails项目?

上周,我成功完成了所有公司应用程序从Ruby 1.8.6到Ruby 1.8.7的转换,包括本地和远程配置。 从现在开始,开发不需要确保与Ruby 1.8.6的向后兼容性。 为了好奇,我尝试针对Ruby 1.9.1运行几个项目的测试套件。 正如预期的那样,我发现了一些与编码相关的问题,但当我发现低级别的不兼容性(例如Rack :: Link已知错误)时,我感到非常震惊。 此时,将开发转移到Ruby 1.9.1的想法根本不适用。 我想知道是否有人使用Ruby 1.9.1成功部署了Rails项目。 您为Rails项目使用哪个Ruby版本? 您打算升级到更新版本吗?

如何添加Mac特定的gem在Mac上捆绑但不在Linux上捆绑?

我正在Mac上开发一个Rails应用程序,我是新手测试,所以我只是将这些gem添加到我的Gemfile中 : group :test, :development do gem ‘rspec-rails’ gem ‘rb-fsevent’ gem ‘growl’ end 但是我的生产服务器运行Linux,所以即使它们没有分组:production ,bundler( v1.0.21 )仍然会尝试安装它们。 ……显然失败了! extconf.rb:19:in ”: Only Darwin (Mac OS X) systems are supported (RuntimeError) 在运行bundle install之前将RAILS_ENV设置为production 不起作用 。 它运行bundle install –without development test ,但是如何仅通过基于您的操作系统的捆绑器来考虑这些gem? 编辑: bundler wiki提供有关如何使用platform作为参数的详细信息。 在捆绑问题#663中给出了相同的解决方案,所以我尝试了: group :test, :development do gem ‘rspec-rails’ platforms :darwin do gem ‘rb-fsevent’ gem […]

如何在不利用其他IP地址的情况下从Ruby获取我的机器的IP地址?

我到处搜索,但他们的解决方案需要某种forms的IP地址。 以下是我找到的解决方案。 require ‘socket’ #METHOD 1 ip = IPSocket.getaddress(Socket.gethostname) puts ip #METHOD 2 host = Socket.gethostname puts host #METHOD 3(uses Google’s address) ip = UDPSocket.open {|s| s.connect(“64.233.187.99”, 1); s.addr.last} puts ip #METHOD 4(uses gateway address) def local_ip orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily UDPSocket.open do |s| s.connect ‘192.168.1.1’, 1 […]

为什么交替中不会有更长的令牌匹配?

我正在使用ruby 2.1,但同样的东西可以在rubular网站上复制。 如果这是我的字符串: 儘管中國婦幼衛生監測辦公室制定的 我用这个表达式进行正则表达式匹配: (中國婦幼衛生監測辦公室制定|管中) 我期待得到更长的令牌作为匹配。 中國婦幼衛生監測辦公室制定 相反,我得到了第二次替换作为匹配。 据我所知,它不像中文字符那样工作。 如果这是我的字符串: foobar 我使用这个正则表达式: (foobar|foo) 返回的匹配结果是foobar 。 如果顺序是另一种方式,那么匹配的字符串就是foo 。 这对我来说很有意义。

ruby算术

为什么这个代码7.30 – 7.20在ruby中返回0.0999999999999996 ,而不是0.10 ? 但是,如果我写7.30 – 7.16 ,例如,一切都会好的,我会得到0.14 。 问题是什么,我该如何解决?

如何使用HTTParty实现此POST请求?

我很难使用Ruby的HTTParty库向API端点发出POST请求。 我正在与之交互的API是Gittip API ,它们的端点需要身份validation。 我已经能够使用HTTParty成功地进行经过身份validation的GET请求。 您可以在示例代码中看到: user = “gratitude_test” api_key = “5962b93a-5bf7-4cb6-ae6f-aa4114c5e4f2” # I have included real credentials since the above is merely a test account. HTTParty.get(“https://www.gittip.com/#{user}/tips.json”, { :basic_auth => { :username => api_key } }) 该请求有效并按预期返回以下内容: [ { “amount” => “1.00”, “platform” => “gittip”, “username” => “whit537” }, { “amount” => “0.25”, “platform” => […]

将hex字符串转换(解码)为二进制字符串

如何在Ruby “\x12\x34\x56\x78\x90” “1234567890”转换为”\x12\x34\x56\x78\x90″ ?

尝试使用brew而不是ports在Snow Leopard上安装ruby-filemagic

我正在尝试安装ruby-filemagic。 我试过sudo gem install ruby​​-filemagic -v 0.2.2并得到: ERROR: Error installing ruby-filemagic: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb checking for magic_open() in -lmagic… no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need […]

输入密码后,Net :: SSH sudo命令挂起

我一直在尝试使用Thor编写一个小型库来帮助我快速创建新项目和站点。 我写了这个小方法: def ssh(cmd) Net::SSH.start( server_ip, user, :port => port) do |session| session.exec cmd end end 在需要时帮助我在远程服务器上运行快速命令。 问题是,当我需要在远程端的sudo下运行命令时,脚本似乎挂在我身上。 例如,当执行此…时 ssh(“sudo cp #{file_from_path} #{file_to_path}” ) 该脚本将提示我输入密码 [sudo] password for user: 但是输入之后整个事情就变成了笨蛋。 有人会碰巧知道为什么它会完全挂起,以及我可以做些什么来在Net :: SSH(或其他替代方案)下的远程服务器上运行sudo命令? *注意:在建议之前,我最初开始将这个库作为Capistrano下的食谱编写,直到我遇到Thor,并认为这是一个尝试它的好机会。 如果需要的话,我不反对将整个事情切换回Capistrano,但如果没有一种简单的方法在远程服务器上运行sudo命令,我会感到非常惊讶。