我正在使用RSpec(2.10.1)来测试模型上的验证,并提取了一些代码以与其他模型验证共享.验证首先写在Companies表上,因此代码如下所示:
# support/shared_examples.rb
shared_examples "a text field" do |field, fill, length|
it "it should be long enough" do
@company.send("#{field}=", fill * length)
@company.should be_valid
end
etc...
end
Run Code Online (Sandbox Code Playgroud)
用法是:
# company_spec.rb
describe Company do
before { @company = Company.new( init stuff here ) }
describe "when address2" do
it_behaves_like "a text field", "address2", "a", Company.address2.limit
end
etc...
end
Run Code Online (Sandbox Code Playgroud)
我想@company将参数作为参数传递给共享示例,以便我可以将代码重用于不同的模型,如下所示:
# support/shared_examples.rb
shared_examples "a text field" do |model, field, fill, length|
it "it should be long enough" do
model.send("#{field}=", fill …Run Code Online (Sandbox Code Playgroud) 我们的应用程序在不同的端口运行两个Rails服务器,它们相互通信.使用Rails 3.2.8,我可以打开一个终端,cd到项目,运行rails s -p3000,打开另一个终端,运行rails s -p3001,一切正常.gemfile包含thin,因此thin将自动启动,但使用rails s将允许使用--debugger何时需要.
自更新Rails 3.2.11以来,这不再有效.我收到一个错误:"服务器已在运行.请检查/home/george/Projects/dashboard/tmp/pids/server.pid".我可以thin直接在两个端口上启动,但是没有调试支持.启动thin一个和rails另一个似乎不起作用,但不清楚当错误停止服务器时所有服务器任务都被杀死.
在Ruby on Rails 3教程中,代码使用:
match '/signup', :to => 'users#new'
match '/signin', :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'
match '/contact', :to => 'pages#contact'
match '/about', :to => 'pages#about'
match '/help', :to => 'pages#help'
Run Code Online (Sandbox Code Playgroud)
而不是
get '/signup', :to => 'users#new'
get '/signin', :to => 'sessions#new'
get '/signout', :to => 'sessions#destroy'
get '/contact', :to => 'pages#contact'
get '/about', :to => 'pages#about'
get '/help', :to => 'pages#help'
Run Code Online (Sandbox Code Playgroud)
即使所有路由只需要HTTP GET动词.为什么不在实践中使用get(或:via => [:get]打开match)并限制路由操作?
在过去一周,在一些gem安装或gem更新操作中,我收到了类似这样的错误:
ERROR: While generating documentation for sinatra-1.3.1 ... MESSAGE: error generating C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/doc/sinatra-1.3.1/rdoc/README_de_rdoc.html: incompatible encoding regexp match (UTF-8 regexp with IBM437 string) (Encoding::CompatibilityError)
类似的:
ERROR: While generating documentation for rest-client-1.6.7 ... MESSAGE: error generating C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/doc/rest-client-1.6.7/rdoc/README_rdoc.html: incompatible encoding regexp match (UTF-8 regexp with IBM437 string) (Encoding::CompatibilityError)
可能还有一个地方.我已经读过这篇文章,但是找不到我没写的代码和我无法控制的数据的解决方案.知道如何解决这个问题吗?
我想建立一个状态缩写列表的数组,因为它很长,我想把它分成几行.但是,使用%w或%W包括行中断的\n.
STATES = %w(AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME\
MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD\
TN TX UT VT VA WA WV WI WY)
Run Code Online (Sandbox Code Playgroud)
所以"ME"会"ME\n",这将"SD"是"SD\n"
我该如何解决这个问题?
我遇到了与路由规范中未定义的方法`assertions'相同的问题,但是我正在运行Rails 4并且它被锁定为minitest 5.0或更高版本.因此使用minitest 4.7的解决方案我无法工作.有没有解决这个问题?我在哪里报告错误?