我正在使用Postgres.我有一个带整数数组列的ActiveRecord模型,如下所示:
t.integer "foo", array: true
Run Code Online (Sandbox Code Playgroud)
如果我为它分配一个ruby数组,它按预期工作:
> @instance.foo = [6,7,8,9,1]
> @instance.foo
=> [6, 7, 8, 9, 1]
Run Code Online (Sandbox Code Playgroud)
但是,如果我分配了这个数组的字符串表示,它似乎试图解析数据,但由于某种原因它总是不用最后一个元素.
> @instance.foo = "[6,7,8,9,1]"
> @instance.foo
=> [6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我正在尝试的方法是在rails3中使用webrat进行集成测试,就像Yehuda在http://pivotallabs.com/talks/76-extending-rails-3分钟34 中使用测试单元一样.
一个例子:
describe SomeApp
it "should show the index page"
visit "/"
body.should =~ /hello world/
end
end
Run Code Online (Sandbox Code Playgroud)
有人知道这样做的方法吗?
integration-testing rspec ruby-on-rails webrat ruby-on-rails-3
我想知道是否可以将HTTParty请求结果作为对象使用.
目前我使用字符串键来访问结果的值:result["imageurl"]或result["address"]["street"]
如果我使用JavaScript,我可以简单地使用:result.imageurl或result.address.street
这是一个Rails2查询:
Foo.find_by_bar_and_baz('a-bar', 'a-baz', :select =>'count(*) as the_count' ).the_count.to_i
Run Code Online (Sandbox Code Playgroud)
查询很难看,但最终的SQL是理想的.
在Rails 3/Arel中有更优雅的方法吗?
编辑
这更漂亮但仍然没有Arel魔法:
Foo.count( :conditions => "bar = 'a-bar' and baz = 'a-baz'" )
Run Code Online (Sandbox Code Playgroud) 我不太确定如何阻止谷歌将我的CDN域与我的主域名混合索引.我想通过直接访问CDN域,通过.htaccess重定向到主域.
事实:
谢谢.
我的应用程序有两个模型:用户和员工,他们的关系是用户has_many员工.
当我尝试为员工控制器编写Rspec测试用例时:
describe "GET 'edit'" do
it "should get user/edit with log in" do
log_in(@user)
employee = mock_model(Employee, :id=>1, :user_id=>@user.id)
get :edit, :id=>employee
response.should be_success
end
end
Run Code Online (Sandbox Code Playgroud)
我的结果如下:
....F
Failures:
1) EmployeesController GET 'edit' should get user/edit with log in
Failure/Error: get :edit, :id=>employee
Mock "Employee_1" received unexpected message :to_ary with (no args)
# C:in `find'
# ./app/controllers/employees_controller.rb:41:in `edit'
# ./spec/controllers/employees_controller_spec.rb:51:in `block (3 levels) in '
Finished in 4.31 seconds
5 examples, 1 failure
请有人帮我解决这个问题吗?谢谢
我的 routes.rb 中的这个尝试重写规则可能是不言自明的:
match "/:user/:photo-thumb.png" =>
redirect("/%{user}/photos/%{photo}/image?style=thumb"),
:photo => /[a-zA-Z]+/
Run Code Online (Sandbox Code Playgroud)
我想将 mysite.com/alice/foo-thumb.png 之类的内容重定向到 mysite.com/alice/photos/foo/image?style=thumb
不过上面的尝试是错误的。任何修复它的想法?
一直在玩Capistrano以在我的服务器和我的开发机器之间进行自动部署.我几乎已经配置了,除了Capistrano似乎无法使用bundle exec命令启动我的服务器.我总是收到以下错误:
编辑:配置文件现在位于/var/www/apps/current/thin.yml
...
* executing "sudo -p 'sudo password: ' bundle exec thin start -C /var/www/thin.config.yml"
servers: ["85.255.206.157"]
[85.255.206.157] executing command
** [out :: 85.255.206.157] Could not locate Gemfile
command finished in 216ms
failed: "sh -c 'sudo -p '\\''sudo password: '\\'' bundle exec thin start -C /var/www/thin.config.yml'" on 85.255.206.157
仅复制了相关的最后一部分.整个文件等的复制工作正常.它只是启动似乎失败的集群.这是我的deploy.rb文件,它处理所有Capistrano的东西:
编辑:该文件已被修改为以下内容:
require "bundler/capistrano"
# define the application and Version Control settings
set :application, "ESCO Matching Demo"
set :repository, "svn://192.168.33.70/RubyOnRails/ESCO"
set :deploy_via, :copy
# Set the login credentials for Capistrano …Run Code Online (Sandbox Code Playgroud) 我昨天通过更新rubygems试图修复一些正在发生的垃圾(令人沮丧).为了修复spork,在我意识到我实际上没有输入"gem install spork"之前我键入了"bundle install spork",它将所有内容安装在我的项目文件夹中的spork目录中.我删除了它,并尝试"捆绑安装".这似乎工作.但我只是去做一个提交,注意到我现在在我的项目中有一个ruby目录.
我删除了,但现在不知道如何让bundle回到我项目目录之外的某个地方安装.有谁知道什么命令会完成这个?
我在Ubuntu 11.04上使用rvm从源代码安装了ruby 1.9.2p180.当我安装一个创建命令行二进制文件的gem时,不会创建链接.例如,当我安装乘客gem时,/var/lib/gems/1.9.2/bin/passenger按预期安装并工作,但符号链接不是/usr/bin/passenger按预期进行的.
更新
实际上我与供应商ruby和gem有相同的问题(在一个从未有过rvm的不同的11.04服务器上).
$ sudo gem install bundler $ bundle bash: bundle: command not found $ type bundle -bash: type: bundle: not found $ ls -lF /var/lib/gems/1.8/bin/bundle -rwxr-xr-x 1 root root 383 2011-08-13 19:49 /var/lib/gems/1.8/bin/bundle*