小编Bri*_*ian的帖子

在OSX Lion上安装autoreconf?

我正在尝试使用一个允许我使用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(或者根本没有关于它的信息)似乎是一个死胡同.

macos ruby-debug rvm osx-lion

159
推荐指数
3
解决办法
9万
查看次数

PHP"漂亮的打印"json_encode

可能重复:
使用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来替换每个逗号,对于括号也是如此...思考?

php json encode

136
推荐指数
3
解决办法
17万
查看次数

在两个DateTime之间迭代,步长为1小时

我正在寻找一种有效的方法,在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中的任何文档.

ruby ruby-on-rails ruby-on-rails-3

32
推荐指数
3
解决办法
1万
查看次数

删除has_many的正确方法:通过连接记录?

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(删除连接记录,不运行其回调).

  1. 如何实际使用默认策略?如果我离开:完全依赖,则根本不删除任何记录.我不能只指出:依赖于has_many关系.Rails回来说"The:dependent选项要么:destroy,:delete_all,:nullify或:restrict({})".
  2. 如果我没有指定:依赖于任何一个关系,它不会使PostsTag对象上的post_id无效,因为它似乎暗示

也许我读错了,我找到的方法是正确的方法?

ruby-on-rails ruby-on-rails-3

16
推荐指数
1
解决办法
1万
查看次数

在表单标签中包含链接?

我希望在表单标签中包含一个链接:

<%= 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?

ruby-on-rails ruby-on-rails-3

13
推荐指数
1
解决办法
6103
查看次数

使用管道划分bash的最佳方法?

我只是在寻找一种简单的方法来划分数字(或提供其他数学函数).假设我有以下命令:

find . -name '*.mp4' | wc -l
Run Code Online (Sandbox Code Playgroud)

如何取wc -l的结果并除以3?

我见过的例子并不涉及重定向输出.

linux math bash

13
推荐指数
3
解决办法
2万
查看次数

强制php strtotime使用UTC

我已经看到了一些关于这个的问题,但没有一个明确的答案......当将字符串转换为unix时间戳时,strtotime()将使用为PHP设置的默认时区.

但是,我想将字符串转换为UTC中的unix时间戳.由于没有这样做的参数,怎么办呢?

我想要转换的字符串是:2011-10-27T20:23:39,已经是UTC了.我想将其表示为UTC中的unix时间戳.

谢谢

php timestamp strtotime

10
推荐指数
2
解决办法
1万
查看次数

在更新数据库提交后运行rails代码,没有after_commit

我正在尝试与我的后台任务经理对抗一些种族案件.基本上,我有一个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时.

postgresql ruby-on-rails resque ruby-on-rails-3

10
推荐指数
1
解决办法
2112
查看次数

如何将错误编码的数据转换为UTF-8?

我正在使用旧的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编码,但这似乎无法修复文本.我是否必须编写一个手动将这些字符更改为应该是什么的脚本?

php mysql character-encoding

10
推荐指数
1
解决办法
4003
查看次数

监视RTMP流,记录是否可用

我正在寻找一种方法来监视流上的活动,以便我可以确定流中是否有任何内容.如果有,我将开始使用rtmpdump录制它.

我想这是通过运行一个每60秒检查一个流的cron任务来完成的.如果它确定流正在通过,则调用rtmpdump开始记录它.如果没有,那么什么都不做,并在60秒内再次检查.

由于rtmpdump只是在没有流数据的情况下出现错误,所以尝试使用它来监视流似乎不是一个好主意,但也许我错了.

如果我手动逐个进行此操作会很容易,但我正在尝试自动记录流的任务,如果它们可用的话.

有没有人遇到过这样做的方法?也许我可以在命令行(linux)中使用其他一些工具?如果它有帮助,我正在使用Ruby/Rails编写代码

ruby ruby-on-rails rtmp video-streaming

8
推荐指数
1
解决办法
1455
查看次数