Tag: ruby

构造函数重写

我上课了: class One def initialize; end end 我需要使用我自己的构造函数创建一个新类,如下所示: class Two < One def initialize(some) puts some super end end Two.new("thing") 但是当我启动代码时,我收到了一个错误: thing test.rb:10:in `initialize’: wrong number of arguments (1 for 0) (ArgumentError)

Rails 4嵌套属性不保存

我似乎无法获得嵌套属性来保存到数据库。 我正在使用Rails 4。 这是我的模特: class Answer < ActiveRecord::Base belongs_to :question end class Question < ActiveRecord::Base has_many :answers belongs_to :survey accepts_nested_attributes_for :answers, allow_destroy: true end class Survey < ActiveRecord::Base has_many :questions validates_presence_of :name accepts_nested_attributes_for :questions end 这是控制器: def create @survey = Survey.new(survey_params) respond_to do |format| if @survey.save format.html { redirect_to @survey, notice: ‘Survey was successfully created.’ […]

JavaScript相当于Ruby的String#scan

这存在吗? 我需要解析一个字符串,如: the dog from the tree 得到类似的东西 [[null, “the dog”], [“from”, “the tree”]] 我可以用Ruby做一个RegExp和String#scan 。 JavaScript的String#match无法处理,因为它只返回RegExp匹配的内容,而不是捕获组,因此返回类似 [“the dog”, “from the tree”] 因为我在Ruby应用程序中多次使用String#scan ,如果有一种快速方法可以在我的JavaScript端口中复制此行为,那将会很好。 编辑:这是我正在使用的RegExp: http : //pastebin.com/bncXtgYA

Ruby反斜杠继续在新行上串?

我正在审查拉取请求中的一行Ruby代码。 我不确定这是否是我以前没见过的错误或function: puts “A string of Ruby that”\ “continues on the next line” 反斜杠是连接这些字符串的有效字符吗? 或者这是一个错误?

Rails用可选参数搜索?

当搜索可以提供许多可选参数(如ID,Zip,City和State)时,如何在数据库上进行搜索? 这些可以具有值或完全空白。 我该怎么做这样的rails查询?

处理Ruby线程中引发的exception

我正在寻找一个经典的exception处理问题的解决方案。 考虑以下代码: def foo(n) puts ” for #{n}” sleep n raise “after #{n}” end begin threads = [] [5, 15, 20, 3].each do |i| threads < e puts “EXCEPTION: #{e.inspect}” puts “MESSAGE: #{e.message}” end 此代码在5秒后捕获exception。 但是如果我将数组更改为[15, 5, 20, 3] ,则上面的代码会在15秒后捕获exception。 简而言之,它始终捕获第一个线程中引发的exception。 任何想法,为什么如此。 为什么不在每次3秒后捕获exception? 如何通过任何线程捕获第一个引发的exception?

在ruby 1.9和CSV :: Writer中编写csv

我有一个与ruby 1.87一起工作的代码,但不适用于ruby 1.9。 它说CSV :: Writer是未声明的,但它仍然是rdoc的一部分。 在fastcsv合并之后,csv api是否发生了变化? 我的代码: require ‘csv’ def self.export_csv file_name = File.join(RAILS_ROOT, ‘public’,’csv’,”#{start_date_f}_#{end_date_f}.csv”) return file_name if File.exist?(file_name) @results = find(:all) header_row = [] outfile = File.open(file_name, ‘wb’) CSV::Writer.generate(outfile) do |csv| header_row = [‘gateway_id’,’created’, ‘gateway_status_id’, ‘panel_id’, ‘panel_status’,’volts_out’, ‘amps_out’, ‘temp’,’aid’ ,’sid’, ‘pisid’] csv << header_row end end 我收到的错误:NameError:未初始化的常量CSV :: Writer 请注意,需要’csv’。 我在我的控制台中尝试它,当我执行require’csv’时,它可以工作,但是一旦我调用CSV :: […]

如何为每个表在Rails中创建完整的审核日志?

我们最近开始在我们公司进行合规性推动,并且需要保留我们目前在Rails应用程序中管理的数据的完整历史记录。 我们已经可以将每个操作的描述性内容简单地推送到日志文件中,这是一种相当不引人注目的方式。 我倾向于在ApplicationController做这样的事情: around_filter :set_logger_username def set_logger_username Thread.current[“username”] = current_user.login || “guest” yield Thread.current[“username”] = nil end 然后创建一个看起来像这样的观察者: class AuditObserver < ActiveRecord::Observer observe … #all models that need to be observed def after_create(auditable) AUDIT_LOG.info "[#{username}][ADD][#{auditable.class.name}][#{auditable.id}]:#{auditable.inspect}" end def before_update(auditable) AUDIT_LOG.info "[#{username}][MOD][#{auditable.class.name}][#{auditable.id}]:#{auditable.changed.inspect}" end def before_destroy(auditable) AUDIT_LOG.info "[#{username}][DEL][#{auditable.class.name}][#{auditable.id}]:#{auditable.inspect}" end def username (Thread.current['username'] || "UNKNOWN").ljust(30) end end 并且通常这很好用 ,但是当使用添加到has_many:through […]

在Sinatra(Ruby)中,我应该如何创建在应用程序生命周期中仅赋值一次的全局变量?

在Sinatra中,我无法创建在应用程序生命周期中仅赋值一次的全局变量。 我错过了什么吗? 我的简化代码如下所示: require ‘rubygems’ if RUBY_VERSION < "1.9" require 'sinatra/base' class WebApp < Sinatra::Base @a = 1 before do @b = 2 end get '/' do puts @a, @b "#{@a}, #{@b}" end end WebApp.run! 这导致了 nil 2 在终端中,2在浏览器中。 如果我尝试在initialize方法中放置@a = 1 ,我在WebApp.run!收到错误WebApp.run! 线。 我觉得我错过了一些东西,因为如果我不能拥有全局变量,那么如何在应用程序实例化期间加载大数据呢? 每次有来自客户端的请求时,似乎都会调用。

Ruby 1.9.2中“|| =”做了什么?

params[:user][:role_ids] ||= [] 它有什么作用? ruby -v = 1.9.2p290