我正在阅读Stackoverflow并偶然发现以下代码
array.map(&:to_i)
Run Code Online (Sandbox Code Playgroud)
好的,很容易看出这段代码的作用,但我想了解更多关于&:我以前从未见过的构造.
不幸的是,我能想到的只是"lambda",而不是.谷歌告诉我Ruby中的lambda语法是->->(x,y){ x * y }
所以&:除了调用单一方法之外,任何人都知道神秘是什么以及它能做什么?
推送到Heroku的一个不好的方面是我必须在运行数据库迁移之前推送代码(并且服务器自动重启).
这显然会导致用户在没有新表/属性的情况下浏览具有新代码的网站时出现大约500个错误:Heroku提出的解决方案是使用维护模式,但我想要一种没有缺点的方法让我的webapp每次都运行!
有办法吗?例如Capistrano:
......我没有停机时间!
我想了解class << self下一个例子中的含义.
module Utility
class Options #:nodoc:
class << self
def parse(args)
end
end
end
end
Run Code Online (Sandbox Code Playgroud) 不过,请忽略"日期和时间"部分.
我有一个Time对象,想找到下一个/上个月.添加减去天数不起作用,因为每月的天数不同.
time = Time.parse('21-12-2008 10:51 UTC')
next_month = time + 31 * 24 * 60 * 60
Run Code Online (Sandbox Code Playgroud)
随着人们不得不照顾滚动,月份的增量也会下降
time = Time.parse('21-12-2008 10:51 UTC')
next_month = Time.utc(time.year, time.month+1)
time = Time.parse('01-12-2008 10:51 UTC')
previous_month = Time.utc(time.year, time.month-1)
Run Code Online (Sandbox Code Playgroud)
我发现的唯一工作是
time = Time.parse('21-12-2008 10:51 UTC')
d = Date.new(time.year, time.month, time.day)
d >>= 1
next_month = Time.utc(d.year, d.month, d.day, time.hour, time.min, time.sec, time.usec)
Run Code Online (Sandbox Code Playgroud)
有没有更优雅的方式做到这一点,我没有看到?你会怎么做?
有没有办法覆盖ActiveRecord关联提供的方法之一?
比方说,我有以下典型的多态has_many:通过关联:
class Story < ActiveRecord::Base
has_many :taggings, :as => :taggable
has_many :tags, :through => :taggings, :order => :name
end
class Tag < ActiveRecord::Base
has_many :taggings, :dependent => :destroy
has_many :stories, :through => :taggings, :source => :taggable, :source_type => "Story"
end
Run Code Online (Sandbox Code Playgroud)
您可能知道这会为Story模型添加一大堆相关方法,如标签,标签<<,tags =,tags.empty?等.
我如何重写这些方法之一?特别是标签<<方法.覆盖普通的类方法很容易,但我似乎无法找到有关如何覆盖关联方法的任何信息.做点什么
def tags<< *new_tags
#do stuff
end
Run Code Online (Sandbox Code Playgroud)
调用它时会产生语法错误,所以显然不那么简单.
如何使用ST2运行Ruby文件并查看输出?我以为我应该使用build命令.但如果我有这个:
def foobar
"hello world"
end
puts foobar
Run Code Online (Sandbox Code Playgroud)
然后按cmd + shift + b.我只看到了
[Finished in 0.1s]
Run Code Online (Sandbox Code Playgroud)
在textmate我可以使用cmd + r(运行命令)并查看ruby脚本中的所有输出.
我错过了什么?
在ruby 1.9.x中,我们可以指定编码File.open('filename','r:iso-8859-1').如果我直接将许多短文件读入字符串,我通常更喜欢使用单行File.read().有没有办法可以直接指定编码,或者我是否必须采用以下方法之一?
str = File.read('filename')
str.force_encoding('iso-8859-1')
Run Code Online (Sandbox Code Playgroud)
要么
f = File.open('filename', 'r:iso-8859-1')
s = ''
while (line = f.gets)
s += line
end
f.close
Run Code Online (Sandbox Code Playgroud) 在Python中,编写它是很繁琐的:
print "foo is" + bar + '.'
Run Code Online (Sandbox Code Playgroud)
我可以在Python中做这样的事吗?
print "foo is #{bar}."
ruby python language-comparisons string-formatting string-interpolation
这是一个类.
module Foo
class Bar
end
end
Run Code Online (Sandbox Code Playgroud)
我希望得到Bar没有的班级名称Foo.
bar = Foo::Bar.new
bar.class.to_s.match('::(.+)$'){ $1 }
Run Code Online (Sandbox Code Playgroud)
我可以通过这段代码得到类名,但我不认为这是获得它的最佳方法.
是否有更好的方法来获取没有命名空间的类的名称?
ruby ×10
activerecord ×1
capistrano ×1
class ×1
datetime ×1
deployment ×1
encoding ×1
file ×1
heroku ×1
namespaces ×1
overriding ×1
python ×1
sublimetext2 ×1
uptime ×1