我知道其他语言中的库可以采用包含本地文件路径或URL的字符串,并将其作为可读IO流打开.
在ruby中有一个简单的方法吗?
我通过了一个长期运行的遗留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,如下所示.
如何列出特定对象可以访问的所有方法?
我有一个@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 应该提供什么,但想检查一下.)
我已经有一个deploy.rb可以在我的生产服务器上部署我的应用程序.
我的应用程序包含一个自定义rake任务(lib/tasks目录中的.rake文件).
我想创建一个能够远程运行该rake任务的上限任务.
要附加到现有字符串,这就是我正在做的事情.
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对于两种情况将是不同的.
我环顾四周如何改变动态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.
我已经使用它一段时间返回true或false建立假种子数据.只是想知道是否有人有更好,更简洁或冗长的方式返回true或false.
rand(2) == 1 ? true : false
Run Code Online (Sandbox Code Playgroud) 什么命令打开Ruby的REPL?
在Python中,您只需打开python而不需要任何参数.
我正在使用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将颜色解释为整数而不是字符串?