Tag: ruby

当我的Ruby版本不是1.9.1时,为什么gem安装在1.9.1目录下?

当我安装一个gem时,它被安装在一个名为1.9.1的目录中,尽pipe这不是我已经安装的Ruby版本: $ ruby -v ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0] $ gem which rails …/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails.rb 为什么会发生? 我没有安装其他的Ruby版本(当然不是v1.9.1)。

Rails的accept_nested_attributes_for与f.fields_for和AJAX

我很好奇如何正确使用f.fields_for和f.fields_for 。 意见/命令/ new.html.erb <%= form_for @order, html:{role: "form"} do |f| %> <%= f.submit "Don't push…", remote: true %> <%= f.text_field :invoice %> <%= f.text_field :ordered_on %> <%= f.text_field :delivered_on %> <table id='order_form'> <h3>Details</h3> <tbody> <%= render 'order_details/details', f: f %> </tbody> <%= link_to 'add line', new_order_detail_path(company_id: params[:company_id]), remote: true %> <%= link_to 'new box', […]

在Rails 4中的rescue_from ActionController :: RoutingError

我有以下错误: ActionController::RoutingError (No route matches [GET] "http://img.dovov.comfavicon.ico") 我想显示错误404页面的链接不存在。 我怎样才能做到这一点?

你的Ruby版本是2.0.0,但你的Gemfile指定了2.1.0

当我尝试捆绑安装时,我收到以下消息: Your Ruby version is 2.0.0, but your Gemfile specified 2.1.0 在我的Gemfile中,我有以下几点: ruby '2.1.0' 当我在控制台中运行ruby -v时,我得到: ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0] Ruby 2.1.0p0是什么意思? 我的Gemfile中应该有什么版本,为什么错误告诉我我有Ruby 2.0.0版本?

使用Process.spawn作为Process.fork的替代品

我的开发环境是运行ruby 1.9.3p125(RubyInstaller)和rails 3.2.8的Windows机器。 在使用第三方gem时,一次又一次出现的问题是缺lessWindows上的fork()。 这最近阻碍了我使用几乎任何运行gem的分布式testing(就像这些 ),因为它们依赖于fork。 一些StackOverflow的老问题试图find解决这个问题的方法,但是在将Process.spawn添加到ruby之前,或者是由于其他原因而被迫使用旧版本的Ruby的人。 提议的解决scheme之一是使用Cygwin获得fork()支持,这是完全没有问题的 – 我想我宁愿在这之前完全切换到Linux。 另一个build议的解决scheme是使用win32-process gem来获得fork()支持。 从最新的版本(0.7.0)中删除叉支持,并使用下一个最早的版本(0.6.6),它支持(叉)支持叉似乎没有工作,至less运行任何分布式testing我尝试过的gem(Spork,并行testing,Hydra,Specjour,几乎所有的)。 有趣的是,gem的作者在自述中提到Process.spawn是Process.fork的一个可以接受的解决方法。 我已经看到很多信息,或者暗示,或者直接声明 ,在Windows上,使用Ruby 1.9,派生可以用作fork的替代品。 我已经花了相当多的时间玩这个,基本上试图用几个引用的gem中的Process.spawn代替Process.fork,但没有成功。 在我看来,也许行为是相似的,但不完全一样。 例如,不清楚spawn实际上是以fork的相同方式复制整个过程,还是仅仅使用提供的参数创build一个新的过程。 也不清楚spawn方法是否接受另一个ruby方法作为参数,或者只接受一个系统命令。 文件似乎意味着它只是一个命令,但似乎是一种方法(sorting),但我可能做的不正确。 我认为对于某些事情来说,fork只是用来创build一个“便宜的线程”,在以前的ruby版本中不支持线程。 然而,似乎这些分布式testing的gem可能合法地依赖于fork()的全部function,以保持项目状态,并且不会为每个testing加载整个ruby环境。 这是在我的正常编程职责和经验之外,所以我可能会做出一些不正确的假设。 所以,我的问题是,在所有情况下,Process.spawn是否可以相对简单地使用以达到与Process.fork相同的结果? 我开始怀疑不是,但是如果是这样的话,有人可以举一个例子来说明如何去做这个转变吗?

Rails 2:当id 1不存在时,Model.find(1)给出ActiveRecord错误

我正在使用Rails 2.3.5,如果我给Model.find(1) ,如果1不在数据库中,则返回ActiveRecord错误。 是否应该像Model.find_by_column('..')一样返回nil ?

“193:%1不是有效的Win32应用程序”与新的Rails应用程序的错误

我有一个新的rails应用程序,我已经在Windows 7下创build了一个目录,并input“rails newapp”。 创造得很好,当我访问根页面时,一切都很好。 但是,当我尝试访问将访问数据库的页面时,我得到这个: 193: %1 is not a valid Win32 application. 在developer.log中。 Mysql在我的机器上运行正常,我有其他的应用程序,我在这里运行在其他目录中,只是这个不起作用。 有什么想法吗?

方法定义中的裸体星号作为参数:def f(*)

我知道这是什么意思: def f(*args) … end 但这是什么意思,为什么你想要使用它? 它是否也可以与命名参数一起显示? def f(*) … end

在Ruby中将关键字与常规参数混合?

Ruby 2.0支持关键字参数。 我想知道,混合规则和关键字参数的“规则”是什么? 像这样的东西不会工作: def some_method(a: 'first', b: 'second', c) [a, b, c] end 但是这将会: def some_method(c, a: 'first', b: 'second') [a, b, c] end 那么为什么在关键字参数(而不是之后)之前join一个正则参数呢? 在网上有一些关于这个(混合关键字和常规参数)? 我似乎无法find任何。

什么& (&符号点)在Ruby意味着什么?

我遇到了这一行的ruby代码。 什么&. 这意味着什么? @object&.method