从静态打字到动态打字

我一直致力于静态类型语言(C / C ++,Java)。 我一直在玩Clojure,我真的很喜欢它。 我担心的一件事是:假设我有一个窗口,需要3个模块作为参数,并且需求发生变化,我需要将另一个模块传递给函数。 我只是更改了函数,编译器在我使用它的任何地方都会抱怨。 但是在Clojure中,在调用函数之前不会抱怨。 我可以做一个正则表达式搜索和替换,但似乎有机会错过一个调用,它将被忽视,直到该函数实际被调用。 你们怎么处理这个?

rspec用户测试给出“未定义的局部变量或方法`confirmed_at’”

我的rspec测试给了我 NameError: undefined local variable or method `confirmed_at’ for # 我的用户规范是: require ‘spec_helper’ describe User do before(:each) do @user = Factory(:user) end # Factory will make sure that in the future if attributes are added the tests below don’t break # Just as long as the Factory is updated for the new attributes as appropriate. […]

Rails 4 – 如何建立PDF文件的链接(name.PDF)?

我正在生成PDF文件,我的链接如下所示: :pdf %> 当我点击这个时,它需要我/ display_invoice / 123456789 (这是一个HTML版本)。 在控制器中,操作如下: def display_invoice if params[:invoice_number] @invoice = … respond_to do |format| format.html format.pdf do #render pdf: ‘123’, # file name render pdf: params[:invoice_number], layout: ‘layouts/application.pdf.erb’#, # layout used #show_as_html: params[:debug].present? # allow debuging end end end end 并在路线: get ‘/display_invoice/:invoice_number’, to: ‘invoices#display_invoice’, :as => ‘display_invoice’ 点击链接后,我想在url/display_invoice/INVOICE_NUMBER.pdf中找到 – […]

在视图中没有显示fields_for has_many关联的复数

目前, Item 属于一个公司并且has_many ItemVariants 。 我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示表单。 它仅在我使用单数时显示。 我检查了我的关联,它们似乎是正确的,它可能与项目嵌套在公司下面有关,还是我错过了其他的东西? 提前致谢。 注意:下面的代码段中省略了不相关的代码。 编辑:不知道这是否相关,但我正在使用CanCan进行身份validation。 的routes.rb resources :companies do resources :items end item.rb的 class Item < ActiveRecord::Base attr_accessible :name, :sku, :item_type, :comments, :item_variants_attributes # Associations #———————————————————————– belongs_to :company belongs_to :item_type has_many :item_variants accepts_nested_attributes_for :item_variants, allow_destroy: true end item_variant.rb class ItemVariant < ActiveRecord::Base attr_accessible :item_id, :location_id # Associations #———————————————————————– belongs_to […]

Rails:堆栈级别太深的错误

我的rails应用程序有3个型号。 小道,地区和特色。 我可以在lib / tasks目录中很好地与这些模型进行交互。 我用anemone来抓取并填充数据库。 我在模型上调用的示例: Trail.find_or_initialize_by_title(detail_title) 我现在正在尝试编写一个使用该模型的控制器。 class TrailController Trail.all end end 现在,如果我打开rails控制台并尝试app.get(‘trail/index’)我得到一个500返回代码,我在我的development.log看到以下内容 SystemStackError(堆栈级别太深): app / controllers / trail_controller.rb:23:在’index’中 所以我显然会引起一些无限的递归。 第23行对应于索引方法的主体。 我在我的应用程序中尝试了其他模型:function和区域,结果是一样的。 有人能告诉我这里我做错了什么,或者我怎么能得到更多的追踪来找出究竟是无限递归的? 我的模型非常简单: class Feature true end class Region true end class Trail true end 看来这是由searchlogic gem引起的。 我在我的Gemfile中有这个: gem ‘rd_searchlogic’, :require => ‘searchlogic’, :git => ‘git://github.com/railsdog/searchlogic.|~ 当我注释掉那一行时,运行bundle install并重试app.get工作正常。 所以searchlogic以某种方式干扰了Trail.all。 为什么Trail.all不能安装searchlogic?

如何在Ruby中访问私有类方法?

给出Ruby中的一个类: class MyClass def self.my_class_method puts “class method” end private def my_method puts “regular method” end private_class_method :my_class_method end 要访问私有方法,我可以在类对象上调用.send(:my_method) ,但这对类方法有什么.send(:my_method) ?

Ruby中的通用换行支持,包括\ r(CR)行结尾

在Rails应用程序中,我接受并解析可能使用三种可能的行终止字符格式化的CSV文件: \n ( LF ), \r\n ( CR+LF )或\r ( CR )。 Ruby的File和CSV库似乎可以很好地处理前两种情况,但最后一种情况(“Mac classic” \r行结尾)不作为换行处理。 能够接受这种格式以及其他格式非常重要,因为Microsoft Excel for Mac(在OS X上运行)似乎在导出到“逗号分隔值”时使用它(尽管导出到“Windows逗号分隔”使得更容易处理\r\n )。 Python具有“通用换行支持”,可以毫无问题地处理这三种格式中的任何一种。 在Ruby中是否有类似的东西可以在不事先知道格式的情况下接受所有三个?

如何在Ruby应用程序中找到性能瓶颈?

我编写了一个Ruby应用程序,它可以解析来自不同格式html,xml和csv文件的大量数据。 如何找出代码中哪些区域占用时间最长? 有没有关于如何提高Ruby应用程序性能的好资源? 或者您是否遵循始终遵循的任何性能编码标准? 例如,你总是加入你的字符串 output = String.new output << part_one output << part_two output << '\n' 或者你会用吗? output = “#{part_one}#{part_two}\n”

通过ruby进程共享变量

我正在写一个gem,我必须分叉两个进程,这两个进程启动两个webrick服务器。 我想通过基类中的类方法启动此服务器,因为应该只运行这两个服务器,而不是多个服务器。 在运行时,我想在这两个服务器上调用一些方法来更改变量。 我的问题是,我无法通过基类的类方法访问forks的实例变量。 此外,我不能在我的基类中使用线程,因为我在使用另一个非线程安全的库。 所以我必须将每个服务器分配给它自己的进程。 我用类变量尝试了它,比如@@server 。 但是当我尝试通过基类访问这些变量时,它是nil 。 我读过Ruby中不可能在forks中共享类变量,对吗? 那么,还有其他方法吗? 我想过使用单身,但我不确定这是不是最好的主意。

如何将Readline支持编译到Ruby中

我的ruby版本是用editline编译的(在os x上)我错过了irb中readline的function。 如何使用readline支持重新编译ruby?