最近我从fixtures切换到factory_girl来测试我的Ruby on Rails应用程序.如果我运行rake test:units,要在my/units目录中运行测试,它们都运行完美.如果我使用rake test:functionals运行我的功能测试(在我的/ functional目录中),情况也是如此.
但是,如果我只是运行rake测试,同时运行我的单元和功能测试,我的验证将在第二组测试中失败(在这种情况下是功能的),并显示消息"验证失败:名称已被采用".
我相信这是由功能测试创建的,这些参数创建的参数与在单元测试中创建的对象具有相同的参数 - 这使我相信在单元测试和功能测试之间不会清除测试数据库.
我使用factory_girl的序列来为对象提供唯一的属性,这意味着factory_girl在测试之间被重置,而数据库则没有.我该怎么做才能解决这个问题?有没有办法在我的两个测试包之间清除数据库?
我正在尝试在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) 我有一个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命令将这些文件从其目录中拉出.这是合理的解决方案吗?
谢谢!
最近我一直渴望一些游戏编程.我主要使用Linux,并想知道Linux上是否有适合Java开发的好图形库?谷歌没有提供有关该主题的非常有用的信息.
另外,另一种语言会更好吗?我想避免使用python - Ruby和Java是我最喜欢的两种语言.不幸的是,在Linux上似乎没有太多关于Linux游戏编程的讨论.
有什么建议/资源吗?易于移植或跨平台功能也很棒.
哦,我更喜欢2D图形.
我目前正在开发一个大型rails应用程序,它通过自定义API gem与另一个产品连接.这导致了一种非常奇怪的错误捕获.例如,当我们与其他产品交互时,它可能会返回我们期望的身份验证错误.然后我们在API gem中捕获该错误并抛出异常,然后在视图中捕获并转发给用户.
我不喜欢这种错误捕获方法,原因如下:
那就是说,我应该充实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脚本来调整图像大小并将它们保存在指定的目录中.我希望应用程序尽可能透明.
是否可以允许文件在所有平台上放到我的Ruby脚本中?例如,用户将文件拖到脚本上,然后将文件路径作为参数并相应地调整图像大小 - 没有GUI,没有控制台等.
我正在使用Ruby on Rails创建一个个人网站.在大多数情况下,RoR是一个完美的工具,允许博客文章,评论等都相当容易.
但是,我想要一些不需要任何特定模型的页面.例如,"关于我"页面是必要的,但不保证它自己的模型/控制器.此外,这些"单例"页面将链接到我的默认布局,即使没有创建对象也必须可以访问.
有没有一个好方法来处理这个?我看过很多RoR网站都有单页,同时保持漂亮的网址,但从来没有一个如何构建它的例子.最后,是否可以使这些单页动态化?如果可以避免的话,我宁愿没有静态HTML.
在我的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 ×6
factory-bot ×2
activerecord ×1
amazon-s3 ×1
apache-pig ×1
emr ×1
hadoop ×1
hdfs ×1
java ×1
linux ×1
scripting ×1
shoulda ×1
testunit ×1
unit-testing ×1