小编jpw*_*ynn的帖子

为什么open("url")有时会返回File有时候是StringIO?

我在S3上存储了两个CSV文件.当我open其中一个,a File返回.当我open是另一个时,a StringIO返回.

fn1 #=> "http://SOMEWHERE.s3.amazonaws.com/setup_data/d1/file1.csv" 
open(fn1) #=> #<File:/var/folders/sm/k7kyd0ns4k9bhfy7yqpjl2mh0000gn/T/open-uri20140814-26070-11cyjn1> 

fn2 #=> "http://SOMEWHERE.s3.amazonaws.com/setup_data/d2/d3/file2.csv" 
open(fn2) #=> #<StringIO:0x007f9718670ff0> 
Run Code Online (Sandbox Code Playgroud)

为什么?有没有办法用一致的数据类型打开它们?

我需要通过相同的数据类型StringCSV.read(open(file_url)),而如果有时它得到一个不能正常工作File,有时一个StringIO.

它们是通过不同的ruby脚本创建的(它们包含非常不同的数据).

在我的Mac上,它们似乎都是普通的文本CSV文件,它们通过AWS控制台上传,并具有相同的权限和相同的元数据(内容类型:application/octet-stream).

ruby file

9
推荐指数
2
解决办法
283
查看次数

想知道贝叶斯分类器是否合适?

我想知道贝叶斯分类器是否适用于一个应用程序,其中相同的短语"冷却"(例如)与某些东西(啤酒,苏打水)相关时"好"但与其他东西相关时"坏"(牛排,披萨,汉堡)?

我想知道的是,如果训练一个贝叶斯分类器("啤酒冷"和"苏打冷"是"好")取消训练它"牛排冷"和"汉堡冷"是"坏").

或者,贝叶斯(正确)可以训练"服务冷"可能是"好"或"坏"取决于它与什么相关联?

我在这里和其他地方找到了很多关于贝叶斯的好信息,但无法确定它是否适合这种类型的应用程序,其中一个好的或坏的短语的答案是"它取决于"?

algorithm bayesian

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

rails 3,heroku,如何使用会话

我看到了如何为rails 3设置会话的一个很好的答案(Rails会话当前实践)

我们从用户那里收集了一系列问题,我想在会议中保留他们的答案列表,直到我们结束然后全部写完......

但我不确定如何从会话中写入和读取信息......任何快速指针都会被理解为如何保存,例如,哈希的内容

此外,我们的应用程序托管在Heroku的网格上是否会改变我们可以/应该如何处理会话?

干杯,JP

ruby-on-rails session-variables session-state

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

rails 3,用户点击链接时如何添加简单的确认对话框

在rails 3中最简单的问题是"你确定要这么做吗?" 当用户点击链接时?

在这种情况下,链接用新值覆盖一些数据.这是一个简单的link_to(GET)回到相同的控制器方法,添加了param [].

ruby-on-rails modal-dialog confirmation ruby-on-rails-3

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

rails 3.1:如何重写inherited_resources并允许rails scaffolding再次正常工作?

解决方案:查看评论

构建一个新的rails 3.1 app.从一个基本的blog_entries模型开始,以获得它的悬念.没有惊喜.

然后我添加了ActiveAdmin,让我的现有模型正常工作.

但是现在当我尝试用这个来构建一个新模型/ etc时:

rails g scaffold Community name:string guid:string
Run Code Online (Sandbox Code Playgroud)

一切似乎都是正确的(视图,迁移),除了控制器没有CRUD选项,看起来像这样:

class CommunitiesController < InheritedResources::Base
end
Run Code Online (Sandbox Code Playgroud)

问题是ActiveAdmin使用inherited_resources来防止手动rails脚手架正常工作.

尽管ActiveAdmin使用inherited_resources,有没有人知道如何"正确"强制rails到scaffold?

ruby-on-rails scaffolding activeadmin

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

非常基本的ruby/sinatra/heroku /调试问题:如何看看puts和p的输出?

我正在尝试构建一个部署在heroku上的非常简单的sinatra应用程序.

我们的应用程序没有将内容输出到Web浏览器,它通过API与另一台计算机进行通信.所以我通常的技巧就是在我使用应用程序时只是向浏览器打印一些额外的调试信息.

我在相关应用程序中看到的示例代码显示了多个'puts'或'p'语句,用于查看发生了什么...

输出在哪里,我可以在程序执行时看到输出,或之后.

一般来说,如果你在Heroku上托管的代码徘徊,那就是没有做你想要的,那么在代码输出消息中的各个地方最简单的方法就是"foo equals 123",这样你就可以看到输出到弄清楚代码中发生了什么?

p和put不输出所以当我输入"heroku logs"时我可以看到的日志...

ruby debugging heroku sinatra

7
推荐指数
2
解决办法
5717
查看次数

用于"if(范围内的数字)然后......"的Ruby快捷方式

以下是否有Ruby快捷方式?

if (x > 2) and (x < 10)
  do_something_here
end
Run Code Online (Sandbox Code Playgroud)

我以为我看到了那种效果,但无法找到它的参考.当然,当你不知道你正在寻找什么算子时,很难查找.

ruby ruby-on-rails

7
推荐指数
3
解决办法
3895
查看次数

如何尽可能简洁地说"如果x == A或B或C"?

我很确定ruby有一个习惯用法.

我说我的代码中有太多的地方

if (x == A) || (x == B) || (x ==C)
  do_something
else
  do_something_else
end
Run Code Online (Sandbox Code Playgroud)

我知道我也能这样做

case x
when A, B, C
   do_something
else
   do_something_else
end
Run Code Online (Sandbox Code Playgroud)

但我更喜欢使用,if else如果有一个很好的成语,使它更简洁.

ruby

7
推荐指数
2
解决办法
4597
查看次数

rails 3.1:app如何处理ActiveRecord :: RecordInvalid的不同'原因'(例如,重复vs验证错误)

在我的应用程序中,我有时会动态创建用户,并且用户的电子邮件必须是有效的格式,并且是唯一的.

我想重定向到不同的地方取决于WHICH验证导致错误:无效格式与重复.

在我的代码中我有

    begin
      user.save!
      flash[:notice] = "Created new user #{email} with password #{password}"

    rescue ActiveRecord::RecordInvalid => e
      flash[:alert] = "Failed to create account because #{e.message}"
      redirect_to SOMEPLACE
    end
Run Code Online (Sandbox Code Playgroud)

如果电子邮件格式无效(例如"user @ example"),则e.message为"验证失败:电子邮件无效"

如果表格中已存在该电子邮件,则e.message为"验证失败:已收到电子邮件"

我讨厌解析e.message文本以确定原因的想法......救援处理程序是否有更好的方法来检测抛出ActiveRecord :: RecordInvalid异常的根本原因?

PS我知道在这个例子中,我可以在进行保存之前简单地检查已经存在的电子邮件,但我正在尝试理解检测和处理不同验证失败的一般解决方案,抛出相同的异常.

ruby-on-rails exception rescue

7
推荐指数
1
解决办法
1172
查看次数

控制器如何手动设置某个字段的验证错误

我有一个包含3个ActiveRecord字段的表单.其中一个领域有一些愚蠢的,以及STATE-DEPENDENT验证要求.(例如,如果在安装向导表单上创建对象,我只验证该字段.)

在我的POST处理程序中创建对象,我想我可以调用errors.add来插入一个特殊的错误条件

@foo = Foo.new(params[:foo])
if goofy_conditions(params[:foo][:goofy_field])
  @foo.errors.add(:goofy_field, "doesn't meet the goofy conditions" )
end
respond_to do |format|
  if @foo.save
    ...
  else
    ... redirect back to form (with error fields hilited)
Run Code Online (Sandbox Code Playgroud)

但是,在控制器中执行@ foo.errors.add()似乎没有做任何事情......如果其他字段通过验证,它不会阻止save().

另一种方法是将自定义验证处理程序放入模型中...我知道使用errors.add(:field,'msg')可以正常工作......但在这种情况下,我的控制器如何"传递"信息到验证器告诉它该字段是否需要验证.

validation ruby-on-rails

7
推荐指数
1
解决办法
7750
查看次数