小编Nol*_*nDC的帖子

在Rails(factory_girl)中清除单元和功能测试之间的测试数据库

最近我从fixtures切换到factory_girl来测试我的Ruby on Rails应用程序.如果我运行rake test:units,要在my/units目录中运行测试,它们都运行完美.如果我使用rake test:functionals运行我的功能测试(在我的/ functional目录中),情况也是如此.

但是,如果我只是运行rake测试,同时运行我的单元和功能测试,我的验证将在第二组测试中失败(在这种情况下是功能的),并显示消息"验证失败:名称已被采用".

我相信这是由功能测试创建的,这些参数创建的参数与在单元测试中创建的对象具有相同的参数 - 这使我相信在单元测试和功能测试之间不会清除测试数据库.

我使用factory_girl的序列来为对象提供唯一的属性,这意味着factory_girl在测试之间被重置,而数据库则没有.我该怎么做才能解决这个问题?有没有办法在我的两个测试包之间清除数据库?

ruby unit-testing ruby-on-rails factory-bot

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

设置工厂女孩与测试::单位和应该

我正在尝试在Ruby on Rails中使用Test :: Unit和Shoulda设置Factory Girl.我已经安装了gem,在test/factories目录下创建了我的工厂文件,并在test/models目录下创建了我的spec文件.我得到的当前错误是'ArgumentError:No such factory:test',这让我相信test_factory.rb文件没有被加载?知道我应该改变什么?

这是我的文件.

#test/factories/test_factory.rb
Factory.define :test do |t|  
  t.name 'test_spotlight'  
  t.label 'test spotlight label'  
end
Run Code Online (Sandbox Code Playgroud)

#test/modes/test_spec.rb
require 'test_helper'
require 'factory_girl'
class TestTest < Test::Unit::TestCase
  def setup
    @test = Factory.build(:test)
  end

  context "A test" do
    should "save with the minimum requirements" do
      assert @test.save
    end
  end 
end 
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails shoulda testunit factory-bot

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

使用S3DistCp从HDFS传输到S3时删除目录级别

我有一个Pig脚本(使用稍微修改过的MultiStorage)来转换一些数据.脚本运行后,我在HDFS上有以下格式的数据:

/tmp/data/identifier1/indentifier1-0,0001  
/tmp/data/identifier1/indentifier1-0,0002  
/tmp/data/identifier2/indentifier2-0,0001  
/tmp/data/identifier3/indentifier3-0,0001
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用S3DistCp将这些文件复制到S3.我正在使用该--groupBy .*(identifier[0-9]).*选项根据标识符组合文件.组合有效,但复制到S3时,文件夹也会被复制.最终输出是:

/s3bucket/identifier1/identifier1
/s3bucket/identifier2/identifier2
/s3bucket/identifier3/identifier3
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有第一个文件夹的情况下复制这些文件?理想情况下,我在S3中的输出看起来像:

/s3bucket/identifier1
/s3bucket/identifier2
/s3bucket/identifier3
Run Code Online (Sandbox Code Playgroud)

我考虑过的另一个解决方案是在复制到S3之前使用HDFS命令将这些文件从其目录中拉出.这是合理的解决方案吗?

谢谢!

hadoop amazon-s3 apache-pig hdfs emr

5
推荐指数
1
解决办法
1439
查看次数

在Linux中使用Java进行游戏编程

最近我一直渴望一些游戏编程.我主要使用Linux,并想知道Linux上是否有适合Java开发的好图形库?谷歌没有提供有关该主题的非常有用的信息.

另外,另一种语言会更好吗?我想避免使用python - Ruby和Java是我最喜欢的两种语言.不幸的是,在Linux上似乎没有太多关于Linux游戏编程的讨论.

有什么建议/资源吗?易于移植或跨平台功能也很棒.

哦,我更喜欢2D图形.

java linux

4
推荐指数
1
解决办法
2368
查看次数

在哪里以及如何处理rails异常?

我目前正在开发一个大型rails应用程序,它通过自定义API gem与另一个产品连接.这导致了一种非常奇怪的错误捕获.例如,当我们与其他产品交互时,它可能会返回我们期望的身份验证错误.然后我们在API gem中捕获该错误并抛出异常,然后在视图中捕获并转发给用户.

我不喜欢这种错误捕获方法,原因如下:

  • 似乎我们不应该期待异常并在我们的逻辑中使用它们.例如,有时我们想要覆盖一个对象 - 所以我们捕获"对象已存在"异常并继续保存我们的模型.
  • 它需要很多特定的错误捕获.代码中有多个区域,我们有if-elses检查某些错误并相应地重定向.

那就是说,我应该充实API gem以获得不会抛出异常的更简单的函数吗?是

if user.has_permission_in_product?
  if object.doesnt_exist_in_product?
    do something
  else
    redirect somewhere with errors
  end
else
  redirect somewhere else with errors
end
Run Code Online (Sandbox Code Playgroud)

最好的

begin
  do something
rescue APIError => e
  if e.message =~ "no permission"
    redirect somewhere with errors
  elsif e.message =~ "already exists"
    redirect somewhere else with errors
  end
end
Run Code Online (Sandbox Code Playgroud)

此外,如果第一个更好,我们如何处理可能在这些函数中抛出的实际API错误?我们将它们鼓泡到控制器中的rescue_from吗?

捕获和处理模型中的异常,或者将它们放入模型并在控制器中处理它们是否更好?

ruby exception-handling ruby-on-rails

4
推荐指数
1
解决办法
4311
查看次数

启用将文件拖放到Ruby脚本上

我正在创建一个小的ruby脚本来调整图像大小并将它们保存在指定的目录中.我希望应用程序尽可能透明.

是否可以允许文件在所有平台上放到我的Ruby脚本中?例如,用户将文件拖到脚本上,然后将文件路径作为参数并相应地调整图像大小 - 没有GUI,没有控制台等.

ruby scripting drag-and-drop cross-platform

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

使用Ruby on Rails创建非标准页面

我正在使用Ruby on Rails创建一个个人网站.在大多数情况下,RoR是一个完美的工具,允许博客文章,评论等都相当容易.

但是,我想要一些不需要任何特定模型的页面.例如,"关于我"页面是必要的,但不保证它自己的模型/控制器.此外,这些"单例"页面将链接到我的默认布局,即使没有创建对象也必须可以访问.

有没有一个好方法来处理这个?我看过很多RoR网站都有单页,同时保持漂亮的网址,但从来没有一个如何构建它的例子.最后,是否可以使这些单页动态化?如果可以避免的话,我宁愿没有静态HTML.

ruby ruby-on-rails

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

Ruby on rails模型与多个父母

在我的Rails应用程序中,我有两个模型,文章和项目,它们都与用户相关联.我想为每个模型添加注释.构建这个的最佳方法是什么?

这是我目前的设置:

class Comment < ActiveRecord::Base
  belongs_to :article
  belongs_to :project
end

class Article < ActiveRecord::Base
  belongs_to :user
  has_many :comments
end

class Project < ActiveRecord::Base
  belongs_to :user
  has_many :comments
end

class User < ActiveRecord::Base
  has_many :articles
  has_many :projects
  has_many :comments, :through => :articles
  has_many :comments, :through => :projects
end 
Run Code Online (Sandbox Code Playgroud)

这是处理结构的正确方法吗?如果是这样,我如何管理CommentsController,如果它是通过文章创建的,则为article_id;如果是通过项目创建的,则为project_id?我应该设置特殊路线吗?

最后一条评论:评论并不总是需要有用户.因为这对我的网站来说,我希望匿名观众能够发表评论.这是一项微不足道的任务吗?

ruby activerecord ruby-on-rails

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