标签: ruby

从本地文件或URL打开IO流

我知道其他语言中的库可以采用包含本地文件路径或URL的字符串,并将其作为可读IO流打开.

在ruby中有一个简单的方法吗?

ruby stream

102
推荐指数
1
解决办法
8万
查看次数

在ruby中捕获Ctrl-c

我通过了一个长期运行的遗留ruby程序,它有很多次出现

begin
  #dosomething
rescue Exception => e
  #halt the exception's progress
end
Run Code Online (Sandbox Code Playgroud)

贯穿始终.

如果不追踪每一个可能的异常,每个异常都可以处理(至少不是立即),我仍然希望能够有时关闭它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
Run Code Online (Sandbox Code Playgroud)

编辑:此代码有效,只要您获得要捕获正确的异常类.这是SystemExit,Interrupt或IRB :: Abort,如下所示.

ruby copy-paste exception

102
推荐指数
4
解决办法
5万
查看次数

停止执行Ruby脚本

是否有类似exitdie在PHP中停止执行Ruby脚本的方法?

ruby

102
推荐指数
3
解决办法
7万
查看次数

如何在Ruby中列出对象的所有方法?

如何列出特定对象可以访问的所有方法?

我有一个@current_user在应用程序控制器中定义的对象:

def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end
Run Code Online (Sandbox Code Playgroud)

并希望在视图文件中查看我可以使用的方法.具体来说,我想看看:has_many关联提供了哪些方法.(我知道:has_many 应该提供什么,但想检查一下.)

ruby ruby-on-rails

102
推荐指数
4
解决办法
9万
查看次数

如何从Capistrano运行rake任务?

我已经有一个deploy.rb可以在我的生产服务器上部署我的应用程序.

我的应用程序包含一个自定义rake任务(lib/tasks目录中的.rake文件).

我想创建一个能够远程运行该rake任务的上限任务.

ruby rake capistrano

101
推荐指数
8
解决办法
6万
查看次数

附加到现有字符串

要附加到现有字符串,这就是我正在做的事情.

s = 'hello'
s.gsub!(/$/, ' world');
Run Code Online (Sandbox Code Playgroud)

是否有更好的方法可以附加到现有字符串.

在有人建议以下回答之前,lemme表明这个不起作用

s = 'hello'
s.object_id
s = s + ' world'
s.object_id 
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,object_id对于两种情况将是不同的.

ruby

101
推荐指数
2
解决办法
12万
查看次数

在路由资源中为Rails更改:id参数的名称

我环顾四周如何改变动态params插槽,并发现这篇文章确实完成了.该帖子是http://robots.thoughtbot.com/post/159809070/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
Run Code Online (Sandbox Code Playgroud)

这些路由创建以下路径:

/clients/:client_name
/clients/:client_name/sites/:name
/clients/:client_name/sites/:site_name/articles/:title
Run Code Online (Sandbox Code Playgroud)

一种解决方案是覆盖def to_param模型中的方法,但我希望这不触及模型本身.

但是自从它为Rails 2.x以来,我怎样才能为Rails 3实现相同的功能呢?

更新

这个程序是使用Mongoid.不是AR.所以,友好的宝石不能用于afaik.

ruby ruby-on-rails ruby-on-rails-3

101
推荐指数
3
解决办法
6万
查看次数

返回随机布尔值的最佳方法

我已经使用它一段时间返回truefalse建立假种子数据.只是想知道是否有人有更好,更简洁或冗长的方式返回truefalse.

rand(2) == 1 ? true : false
Run Code Online (Sandbox Code Playgroud)

ruby

101
推荐指数
3
解决办法
2万
查看次数

什么命令打开Ruby的REPL?

什么命令打开Ruby的REPL?

在Python中,您只需打开python而不需要任何参数.

ruby read-eval-print-loop

101
推荐指数
2
解决办法
3万
查看次数

从Rails 4.1中的select中保存枚举

我正在使用Rails 4.1中的枚举来跟踪葡萄酒的颜色.

Wine.rb

class Wine < ActiveRecord::Base
    enum color: [:red, :white, :sparkling]
end
Run Code Online (Sandbox Code Playgroud)

在我看来,我生成一个选择,以便用户可以选择具有特定颜色的葡萄酒

f.input :color, :as => :select, :collection => Wine.colors
Run Code Online (Sandbox Code Playgroud)

这会生成以下HTML:

<select id="wine_color" name="wine[color]">
  <option value=""></option>
  <option value="0">red</option>
  <option value="1">white</option>
  <option value="2">sparkling</option>
</select>
Run Code Online (Sandbox Code Playgroud)

但是,在提交表单时,我收到一个参数错误说明'1' is not a valid color.我意识到这是因为color必须平等1而不是"1".

有没有办法强制Rails将颜色解释为整数而不是字符串?

ruby enums ruby-on-rails ruby-on-rails-4

101
推荐指数
7
解决办法
5万
查看次数