小编Joh*_*hir的帖子

解析字符串作为数组属性的数据时,为什么ActiveRecord不在最后一个元素?

我正在使用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)

为什么会这样?

postgresql ruby-on-rails rails-activerecord ruby-on-rails-5

5
推荐指数
0
解决办法
87
查看次数

rspec如何与Rails 3一起进行集成测试?

我正在尝试的方法是在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

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

是否可以将HTTParty请求结果作为对象使用

我想知道是否可以将HTTParty请求结果作为对象使用.

目前我使用字符串键来访问结果的值:result["imageurl"]result["address"]["street"]

如果我使用JavaScript,我可以简单地使用:result.imageurlresult.address.street

ruby xml json ruby-on-rails httparty

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

使用Rails 3/Arel进行计数查询是否有一种特别优雅的方式?

这是一个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)

activerecord ruby-on-rails arel ruby-on-rails-3

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

从CDN重定向到主网站直接访问CDN域?

我不太确定如何阻止谷歌将我的CDN域与我的主域名混合索引.我想通过直接访问CDN域,通过.htaccess重定向到主域.

事实:

  1. 两个域都指向文件系统中的相同位置.
  2. 两者共享相同的robots.txt
  3. CDN域名:cdn.example.com
  4. 主域名:example.com

谢谢.

php .htaccess cdn apache2

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

RSpec错误:模拟"Employee_1"收到意外消息:to_ary with(no args)

我的应用程序有两个模型:用户和员工,他们的关系是用户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

请有人帮我解决这个问题吗?谢谢

rspec ruby-on-rails

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

如何在 Rails 路由中使用正则表达式进行重定向?

我的 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

不过上面的尝试是错误的。任何修复它的想法?

ruby routing ruby-on-rails url-rewriting

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

Capistrano使用瘦服务器进行部署

一直在玩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)

deployment capistrano ruby-on-rails thin bundler

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

bundle正在我的项目中安装ruby目录

我昨天通过更新rubygems试图修复一些正在发生的垃圾(令人沮丧).为了修复spork,在我意识到我实际上没有输入"gem install spork"之前我键入了"bundle install spork",它将所有内容安装在我的项目文件夹中的spork目录中.我删除了它,并尝试"捆绑安装".这似乎工作.但我只是去做一个提交,注意到我现在在我的项目中有一个ruby目录.

我删除了,但现在不知道如何让bundle回到我项目目录之外的某个地方安装.有谁知道什么命令会完成这个?

ruby ruby-on-rails bundler

4
推荐指数
2
解决办法
387
查看次数

为什么我的rubgems没有与二进制文件建立符号链接?

我在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*

ruby ubuntu gem rubygems rvm

4
推荐指数
2
解决办法
2508
查看次数