我正在尝试使用一个允许我使用ruby-debug的补丁来重新安装ruby 1.9.3.
按照说明操作时
rvm reinstall 1.9.3 --patch debug --force-autoconf
Run Code Online (Sandbox Code Playgroud)
它贯穿并应用补丁吐出后:
rvm需要autoreconf来安装所选的ruby解释器,但是在PATH中找不到autoreconf.
不幸的是,谷歌搜索如何在OSX Lion上安装autoreconf(或者根本没有关于它的信息)似乎是一个死胡同.
可能重复:
使用PHP进行漂亮的JSON打印
我正在编写一个创建JSON文件的脚本.现在我只是使用json_encode
(PHP 5.2.x)将数组编码为JSON输出.然后我将返回的值打印到文件并保存.问题是客户端希望能够打开这些JSON文件以便于阅读,所以我想在其中添加换行符和"漂亮打印"JSON输出.关于如何做到这一点的任何想法?我唯一能看到的另一种选择是根本不使用json_encode
,只需手动编写文件内容并为每一行添加自己的换行符.
这是我得到的:
{"product_name":"prod1","val1":1,"val2":8}
Run Code Online (Sandbox Code Playgroud)
这就是我想要的:
{
"product_name":"prod1",
"val1":1,
"val2":8
}
Run Code Online (Sandbox Code Playgroud)
我想我也可以用命令后跟一个\n来替换每个逗号,对于括号也是如此...思考?
我正在寻找一种有效的方法,在Ruby 1.9.x/Rails 3.2.x中,在两个DateTime对象之间进行迭代,步长为1小时.
('2013-01-01'.to_datetime .. '2013-02-01'.to_datetime).step(1.hour) do |date|
...
end
Run Code Online (Sandbox Code Playgroud)
我理解这个问题1.hour
只是秒数,但我尝试将其转换为DateTime对象并将其用作步骤也不起作用.
我看着" 小心红宝石糖 ".在底部附近提到DateTime有一个直接的step
方法.我通过methods
在DateTime对象上运行来确认这一点,但是step
在Ruby或Rails的文档中我找不到DateTime中的任何文档.
class Post < ActiveRecord::Base
has_many :posts_tags
has_many :tags, through: :posts_tags
end
class PostsTag < ActiveRecord::Base
belongs_to :post
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :posts_tags
has_many :posts, through: :posts_tags
end
Run Code Online (Sandbox Code Playgroud)
当Post被破坏时,我希望它的所有关联也被删除.我不想在PostsTag模型上运行验证.我只是想删除.
我发现在Post模型中添加一个依赖于帖子标签的关系可以按照我想要的方式工作:has_many :posts_tags, dependent: :delete_all
.
但是,有关该主题的文件似乎表明我应该这样做:has_many :tags, through: :posts_tags, dependent: :delete_all
.当我这样做时,Tag对象被破坏,连接对象仍然存在.
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many
对于has_many,destroy将始终调用正在删除的记录的destroy方法,以便运行回调.但是,删除将根据:dependent选项指定的策略进行删除,或者如果没有给出依赖选项,则它将遵循默认策略.默认策略是:nullify(将外键设置为nil),但has_many:through除外,其中默认策略为delete_all(删除连接记录,不运行其回调).
也许我读错了,我找到的方法是正确的方法?
我希望在表单标签中包含一个链接:
<%= form.check_box 'eula' %>
<%= form.label 'eula', "I agree to the <a href='#' id='eula-link'>EULA</a>", class: 'label-checkbox' %>
Run Code Online (Sandbox Code Playgroud)
Rails将HTML写出来,可能应该这样,但我将如何实现这一目标?单击EULA会打开一个JS弹出窗口.我想在某种程度上嵌入一个link_to?
我只是在寻找一种简单的方法来划分数字(或提供其他数学函数).假设我有以下命令:
find . -name '*.mp4' | wc -l
Run Code Online (Sandbox Code Playgroud)
如何取wc -l的结果并除以3?
我见过的例子并不涉及重定向输出.
我已经看到了一些关于这个的问题,但没有一个明确的答案......当将字符串转换为unix时间戳时,strtotime()将使用为PHP设置的默认时区.
但是,我想将字符串转换为UTC中的unix时间戳.由于没有这样做的参数,怎么办呢?
我想要转换的字符串是:2011-10-27T20:23:39,已经是UTC了.我想将其表示为UTC中的unix时间戳.
谢谢
我正在尝试与我的后台任务经理对抗一些种族案件.基本上,我有一个Thing
对象(已经存在)并为其分配一些属性,然后保存它.使用新属性保存后,我将其排入Resque,并传入ID.
thing = Thing.find(1)
puts thing.foo # outputs "old value"
thing.foo = "new value"
thing.save
ThingProcessor.queue_job(thing.id)
Run Code Online (Sandbox Code Playgroud)
后台作业将使用从数据库加载对象Thing.find(thing_id)
.
问题是我们发现Resque在获取作业和Thing
从ID 加载对象方面非常快,它加载了一个陈旧的对象.因此,在工作中,调用thing.foo
仍将返回"旧值",如1/100次(不是真实数据,但不会经常发生).
我们知道这是一个竞争案例,因为rails将thing.save
在数据实际提交到数据库之前返回(在本例中为postgresql).
Rails中有一种方法只能在数据库操作提交后执行代码吗?基本上我想确保在Resque加载对象时,它会获得最新鲜的对象.我知道这可以使用模型after_commit
上的钩子来实现Thing
,但我不希望它在那里.我只需要在这个特定的上下文中发生这种情况,而不是每次模型都提交更改为DB时.
我正在使用旧的mysql数据库中的数据.这个数据库中有一个表,其字符串列的编码设置为"cp1252 West European(latin1)"(与Windows-1252相同).从mysql命令提示符查询数据时,此字段中的数据表示为:
Obama’s
这应该是读
Obama’s
我试过按照如何将整个MySQL数据库字符集和整理转换为UTF-8的接受答案?在MySQL中将字段转换为UTF-8,但没有区别.
我还尝试在该表中插入一个新行,使用Obama’s
该字段的文本(同样,从mysql命令提示符).但是,当我查询刚刚插入的同一行时,正确表示了此文本.当字段设置为latin1并且设置为UTF-8时,我尝试执行该插入.结果相同.
这让我相信,当坏数据被插入数据库时,它首先被PHP错误编码.这是我变得模糊的地方.
我可以假设数据是通过Web表单插入并使用PHP处理的.PHP在将其插入数据库之前做了什么?它是否将字符串转换为UTF-8,根据此有用页面上的表格,它使用三个字节%E2 %80 %99
来表示’
字符.我有这个权利吗?
如果这是正确的,我有什么选择来修复这些数据?我想将表及其字段转换为UTF-8编码,但这似乎无法修复文本.我是否必须编写一个手动将这些字符更改为应该是什么的脚本?
我正在寻找一种方法来监视流上的活动,以便我可以确定流中是否有任何内容.如果有,我将开始使用rtmpdump录制它.
我想这是通过运行一个每60秒检查一个流的cron任务来完成的.如果它确定流正在通过,则调用rtmpdump开始记录它.如果没有,那么什么都不做,并在60秒内再次检查.
由于rtmpdump只是在没有流数据的情况下出现错误,所以尝试使用它来监视流似乎不是一个好主意,但也许我错了.
如果我手动逐个进行此操作会很容易,但我正在尝试自动记录流的任务,如果它们可用的话.
有没有人遇到过这样做的方法?也许我可以在命令行(linux)中使用其他一些工具?如果它有帮助,我正在使用Ruby/Rails编写代码