删除对象时运行方法

我正在学习ruby并且没有找到覆盖等效object.delete函数的方法: 这就是我这样做的方式: class Foo @@no_foo=0 def initialize @@no_foo+=1 end def delete #class specific cleanup… @@no_foo-=1 end def Foo.no_foo return “#@@no_foo” end end def delete(obj) #object independent cleanup… obj.delete return nil end foo1 = Foo.new foo2 = Foo.new puts Foo.no_foo puts foo2 foo2 = delete(foo2) puts foo2 puts Foo.no_foo 正如你所看到的,这是处理事情的一种hacky方式……有没有更简单的方法来解决这个问题? 基本上我想在减少该类的总计数器的同一调用中使我的对象无法访问。 在将变量(指向对象的指针)设置为nil时,我找不到一个被调用的方法。 我发现无法删除对象。

如何使用Ruby中的正则表达式从文本中提取地址

我试图从文本中提取美国地址。 因此,如果我有以下文本变体,那么我想提取地址部分 今天是在酒吧见面的好日子。 地址是123 fake street,NY,23423-3423 just came from 423 Elm Street, kk, 34223 …had awesome time blah blah bleh blah 23414假露台,MM别的东西 experimented my teleporter to get to work but reached at 2423 terrace NY 如果有人可以提供一些起点,那么我可以根据其他变化进行塑造。

Rails中的Namespaced模型生成NameError:未初始化的常量

我有这样的文件夹结构: app/ models/ bar/ foo.rb connection.rb foo.rb connection.rb是一个用于连接到另一个数据库的“抽象类”,因此: class Bar::Connection < ActiveRecord::Base self.abstract_class = true establish_connection "outsidedb_#{Rails.env}" end bar/foo.rb用于从foos访问foos表,因此: class Bar::Foo < Bar::Connection end 并且foo.rb用于从应用程序的db访问foos表,因此: class Foo < ActiveRecord::Base end 从rails控制台,如果我做Foo.first或Bar::Foo.first事情就像我期望的那样,我分别从应用程序db和外部数据库的foos表中获得第一个条目。 但是,如果我尝试从bar/foo.rb访问Foo ,我会得到以下结果: class Bar::Foo works Foo.first #=> NameError: uninitialized constant Bar::Foo::Foo end def self.other_test Foo.parent #=> Object Foo.superclass #=> ActiveRecord::Base Object::Foo.first #=> works ActiveRecord::Base::Foo.first […]

Sinatra使用Facebook身份validation的会话

我对ruby和Sinatra很新,我有一个基本问题: 我正在尝试构建的应用程序将使用Facebook作为在应用程序中validation用户身份的唯一方法。 我想存储一个本地用户表,其中只包含facebook uid以及一些用户首选项。 我看了几个允许我对facebook API进行身份validation的gem,但是我不确定在我建立用户之后如何在我的应用程序中控制会话是有效的。 我一直在使用考拉gem与facebook交谈,我也看到过sinatra-sessiongem用于运行会话方面的事情。 一旦用户使用他们的Facebook帐户登录,有人能指出我如何管理会话的正确方向吗?

在Python中冻结?

我已经用Python编程了一段时间,最近才开始在工作中使用Ruby。 语言非常相似。 但是,我刚刚遇到了一个Rubyfunction,我不知道如何在Python中进行复制。 这是Ruby的freeze方法。 irb(main):001:0> a = [1,2,3] => [1, 2, 3] irb(main):002:0> a[1] = ‘chicken’ => “chicken” irb(main):003:0> a.freeze => [1, “chicken”, 3] irb(main):004:0> a[1] = ‘tuna’ TypeError: can’t modify frozen array from (irb):4:in `[]=’ from (irb):4 有没有办法在Python中模仿这个? 编辑:我意识到我觉得这只是为了列表; 在Ruby中, freeze是Object上的一个方法,因此您可以使任何对象不可变。 我为这种困惑道歉。

如何生成适当的`url_for`嵌套资源?

我正在使用Ruby on Rails 3.2.2,我想为嵌套资源生成一个正确的url_for URL。 也就是说,我有: # config/routes.rb resources :articles do resources :user_associations end # app/models/article.rb class Article < ActiveRecord::Base … end # app/models/articles/user_association.rb class Articles::UserAssociation < ActiveRecord::Base … end 注意 :生成的命名路由类似于article_user_associations , article_user_association , edit_article_user_association ,… 在我看来,我使用: url_for([@article, @article_association]) 然后我收到以下错误: NoMethodError undefined method `article_articles_user_association_path’ for #<# 但是,如果我以这种方式说明路由器 # config/routes.rb resources :articles do resources :user_associations, […]

选择带有Rspec的单选按钮

我正在使用RSpec为表单编写测试,我想知道如何选择单选按钮,给出以下表单: 我希望我的测试看起来像: describe “with valid options selected” do before do #CODE TO SELECT A RADIO BUTTON click_button “SAVE” end end

使用Gitlab的Ruby Gems没有这样的文件加载 – rb-inotify

我正在使用Gitlab,我正在尝试按照这些说明将我的gitolite v2升级到v3: “如果在2.9.x中出现此问题,您应该重新安装gitolite。 1)备份所有存储库。 只需在其他地方复制/ home / git / repositories / *即可。 2)安装新的gitolite。 请参阅https://github.com/gitlabhq/gitlabhq/blob/master/doc/installation.md 3)复制存储库。 4)sudo -u gitlab -H bundle exec rake gitlab:gitolite:update_keys && sudo -u gitlab -H bundle exec rake gitlab:gitolite:update_repos 就这样。 该步骤还与想要将gitolite v2更新为v3的用户有关“ 我的Gemfile和Gemfile.lock中有rb-inotify,如下所示: gitlabhq@build:~/gitlabhq$ grep notify Gemfile gem ‘rb-inotify’, :require => linux_only(‘rb-inotify’) gitlabhq@build:~/gitlabhq$ grep notify Gemfile.lock rb-inotify (0.8.8) rb-inotify 我正在尝试使用以下命令更新我的密钥和repos,但我总是收到错误“ 没有这样的文件加载–rb-inotify ” […]

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

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

Rails中“class << self”的意思是什么?

可能重复: 在Ruby中的类<< self idiom 有人可以向我解释一下“自我”吗? 我想知道class << self statement在模型类中意味着什么? 它内部的陈述与外面的陈述有何不同。 例如: class Post < ActiveRecord::Base class << self def search(q) # search from DB end end def search2(qq) # search from DB end end class << self意味着什么? 方法search(q)和search2(qq)之间有什么区别?