Ruby / Rails – 如何将秒转换为时间?

我需要执行以下转换: 0 -> 12.00AM 1800 -> 12.30AM 3600 -> 01.00AM … 82800 -> 11.00PM 84600 -> 11.30PM 我想出了这个: (0..84600).step(1800){|n| puts “#{n.to_s} #{Time.at(n).strftime(“%I:%M%p”)}”} 这给了我错误的时间,因为Time.at(n)期望n是epoch的秒数: 0 -> 07:00PM 1800 -> 07:30PM 3600 -> 08:00PM … 82800 -> 06:00PM 84600 -> 06:30PM 什么是最佳的,时区无关的解决方案?

了解赛璐珞并发

以下是我的赛璐珞代码。 client1.rb 2个客户端之一。 (我把它命名为客户1) client2.rb 2个客户中的第2个。 (命名为客户2) 注意: 上述两个客户端之间唯一的区别是传递给服务器的文本。 ie(分别是’client-1’和’client-2′ ) 在测试这2个客户端(通过并排运行)对后续2个服务器(一次一个)。 我发现很奇怪的结果 。 server1.rb ( 取自celluloid-zmq的README.md的基本示例 ) 使用此作为上述2个客户端的示例服务器导致并行执行任务。 OUTPUT ruby server1.rb Received at 04:59:39 PM and message is client-1 Going to sleep now Received at 04:59:52 PM and message is client-2 注意: client1.rb请求处于hibernate状态时处理client2.rb消息。( 并行标记 ) server2.rb 使用此作为上述2个客户端的示例服务器并未导致并行执行任务。 OUTPUT ruby server2.rb Received at 04:55:52 PM […]

将构造函数参数转换为实例变量

可能重复: 在ruby中创建惯用对象 当我有一个如下所示的initialize方法时,有很多次: class Foo def initialize bar, buz, … @bar, @buz, … = bar, buz, … end end 有没有办法用一个简单的命令来做到这一点,如: class Foo attr_constructor :bar, :buz, … end 其中符号表示实例变量的名称(具有attr_accessor , attr_reader , attr_writer的精神/味道)? 我想知道是否有内置方式或更优雅的方式做这样的事情: class Class def attr_constructor *vars define_method(“initialize”) do |*vals| vars.zip(vals){|var, val| instance_variable_set(“@#{var}”, val)} end end end 所以我可以像这样使用它: class Foo attr_constructor :foo, :bar, :buz […]

如何判断是否已在模块命名空间中定义了Constant,而不是全局命名空间?

我有两个同名的Const; 一个是全局const,另一个是在命名空间Admin下定义的。 但是我需要区分它们;全局的已经定义了,如果还没有定义,则需要自定义范围: A = ‘A Global Const’ module Admin A = ‘A Const within the Admin namespace’ if const_defined? ‘A’ # always true and the Admin::A can never be defined! end puts A # => ‘A Global Const’ puts Admin::A # => NameError: uninitialized constant Admin::A # the Admin::A will never be defined. 但是如果定义了全局A,那么“const_defind?” […]

我可以覆盖test_helper.rb中的task:environment来测试rake任务吗?

我在Rakefile中有一系列rake任务,我想测试它作为我的规范的一部分等。每个任务都以下面的forms定义: task :do_somthing => :environment do # Do something with the database here end 其中:environment任务设置ActiveRecord / DataMapper数据库连接和类。 我没有将它作为Rails的一部分使用,但我有一系列测试,我喜欢将它作为BDD的一部分运行。 这个片段说明了我是如何尝试测试rake任务的。 def setup @rake = Rake::Application.new Rake.application = @rake load File.dirname(__FILE__) + ‘/../../tasks/do_something.rake’ end should “import data” do @rake[“do_something”].invoke assert something_in_the_database end 所以我的帮助请求 – 是否有可能在我的test_helper.rb文件中覆盖:environment任务,所以我的rake测试与我的测试数据库交互,而不是生产? 我已经尝试在帮助文件中重新定义任务,但这不起作用。 对解决方案的任何帮助都会很棒,因为过去一周我一直坚持这一点。

Rspec包在TextMate和rvm中被破坏

自从我开始使用rvm以来,我度过了一段艰难的时光。 我已经完成了所有的rvm / textmate设置并拥有最新的捆绑包但我仍然无法从textmate运行Rspec测试 。 我有来自github.com/rspec/rspec-tmbundle.git的最新软件包,它安装在~/Library/Application\ Support/TextMate/Bundles/ RSpec.tmbundle RVM默认使用系统ruby 1.8.6 Rspecgem版本 gem列表 – 本地| grep规范blue_light_special(0.2.0)rspec(2.2.0)rspec-core(2.2.1,2.0.1)rspec-expectations(2.2.0,2.0.1)rspec-mocks(2.2.0,2.0.1) rspec-rails(2.0.1,1.3.2) TextMate的 TM_RUBY = /用户/ jspooner / .rvm /斌/ RVM-自动ruby 错误: rspec / core(LoadError) / Users / jspooner / Library / Application Support / TextMate / Bundles / RSpec.tmbundle / Support / lib / rspec / mate.rb:29:in require’: no such […]

为Ruby SQLite插入转义字符串

我正在创建一个Ruby脚本,将大约150k行的制表符分隔文本文件导入SQLite。 到目前为止: require ‘sqlite3’ file = File.new(“/Users/michael/catalog.txt”) string = [] # Escape single quotes, remove newline, split on tabs, # wrap each item in quotes, and join with commas def prepare_for_insert(s) s.gsub(/’/,”\\\\'”).chomp.split(/\t/).map {|str| “‘#{str}'”}.join(“, “) end file.each_line do |line| string << prepare_for_insert(line) end database = SQLite3::Database.new("/Users/michael/catalog.db") # Insert each string into the database string.each do […]

使用Capybara下载CSV

对于rspec测试,我需要以CSV文件格式下载报告并validation给出的信息。 单击按钮时,将从网页生成报告。 浏览器保存对话框已打开,提供打开或保存选项。 如何使用rspec和Capybara将文件保存到计算机中?

如何在json渲染中获取完整的belongs_to对象?

基本上,我有一个对象belongs_to:companies,并具有:company_id属性。 当我渲染json:@ coupons时,JSON是否可能包含其所有者的属性而不是company_id?

如何设置发送带有邮件gem的HTML电子邮件?

我正在使用Mail gem发送电子邮件。 这是我的代码: require ‘mail’ require ‘net/smtp’ Mail.defaults do delivery_method :smtp, { :address => “smtp.arrakis.es”, :port => 587, :domain => ‘webmail.arrakis.com’, :user_name => ‘myname@domain.com’, :password => ‘pass’, :authentication => ‘plain’, :enable_starttls_auto => true } end Mail::ContentTypeField.new(“text/html”) #this doesnt work msgstr= File.read(‘text2.txt’) list.each do |entity| begin Mail.deliver do from ‘myname@domain.com’ to “#{entity}” subject ‘a good subject’ […]