Tag: ruby

Rails中与数据库无关的SQL字符串连接

我想在Rails查询中进行数据库端字符串连接,并以与数据库无关的方式进行。 SQL-92指定双栏( || )作为连接运算符。 不幸的是,它看起来像MS SQL Server不支持它; 它用+代替。 我猜测Rails的SQL语法抽象已经解决了特定于db的运算符问题。 如果确实存在,我该如何使用它?

我可以或者应该通过ruby中的object_id属性找到一个对象吗?

当我制作一个新物体时,让我们说吧 o = Object.new 这个对象有一个id, o.object_id #=> ######## 我还使用Object类创建了其他几个对象。 使用object_id属性让ruby找到对象’o’的最佳方法是什么? 我在想类似的东西 search_id = o.object_id search_result = Object.find(search_id) 其中’search_results’将是与’search_id’对应的对象。 此外,我肯定会欣赏一种完全不同的方法来索引对象并通过guid或其他东西检索它们。 非常感谢! 嗯,我想我真的只需要在数据库的上下文中考虑这个问题,只需使用MySQL查询或我选择查找对象的数据库。 我想的越多,通过这个想象中的’find()’方法可以访问的唯一可能的东西是新创建或“活跃”的东西? 很抱歉让这个问题变得糟透了。

安装gsl gem的问题

我可以在我的主目录中成功安装gsl库,但是当我尝试安装gsl gem时,我得到了一个我不理解的大错误列表。 我想知道是否有人可以告诉我为什么我会得到这些错误。 我可以说我有: 成功安装gsl; 至少那是它的样子。 我指出了gsl-config的路径 这是错误日志的样子: Building native extensions. This could take a while… ERROR: Error installing gsl: ERROR: Failed to build gem native extension. /home/ted/ruby-1.9.1/bin/ruby extconf.rb install gsl checking gsl version… 1.15 checking gsl cflags… -I/home/ted/gsl-1.15/include checking for main() in -lcblas… no checking gsl libs… -L/home/ted/gsl-1.15/lib -lgsl -lgslcblas -lm checking for round()… […]

在Rack :: Test中使用Cookies

我正在尝试使用Rack :: Test为我的Sinatra应用程序编写RSpec测试。 我无法理解如何使用cookies。 例如,如果我的应用程序设置了cookie(而不是通过:session),我该如何检查该cookie是否正确设置? 另外,如何使用该cookie发送请求?

如何从Rails控制器推送到Faye Server?

我有这个代码: def create message = Message.new(text: params[:message][:text], author: params[:message][:author]) if message.save render json: {result: ‘success’} else render json: {result: ‘failure’} end end 我有客户订阅了Faye Server: var subscription = client.subscribe(‘/foo’, function (message) { getMessages(); }); 我想在创建消息时向Faye发布一些消息。 如Faye Ruby Sever文档中所列,我必须这样做: require ‘eventmachine’ EM.run { client = Faye::Client.new(‘http://localhost:9292/faye’) client.subscribe(‘/foo’) do |message| puts message.inspect end client.publish(‘/foo’, ‘text’ => ‘Hello world’) […]

Ruby语法

有人为什么我这样写: ruby-1.8.7-p302 > a = %w( abc) => [“a”, “b”, “c”] ruby-1.8.7-p302 > while (i = a.shift) do; puts i ; end a b c => nil 这看起来像是通过一个块来。 并不是: while(i = a.shift) { puts i; } 是因为while语法的“do”只是语法糖而且与块的“do”无关?

Ruby Minitest:套件级或类级设置?

使用内置的Ruby Minitest框架,有没有办法在整个套件运行之前运行一些代码,甚至在整个TestClass运行之前运行一次? 我在这个问题的答案中看到Test :: Unit :: after_tests可用于在所有测试运行后运行代码; 是否有类似的方法在所有测试运行之前运行代码? 我希望在测试运行之前使用此function初始化测试数据库,并在它们全部运行后将其拆除。 谢谢!

Ruby:将proc转换为lambda?

是否有可能将proc-flavored Proc转换为lambda风味的Proc? 有点惊讶,这不起作用,至少在1.9.2: my_proc = proc {|x| x} my_lambda = lambda &p my_lambda.lambda? # => false!

Sinatra在post上清除会话

enable :sessions set :session_secret, ‘secret’ post ‘/login’ do session[:loggedInUser] = jsondata[‘username’].to_s puts session[:loggedInUser] + ” is the session” end 在这一点上,一切都很好。 当我像这样阅读会话时: get ‘/debug’ do session.inspect end 它就在那里。 但问题来了。 当我稍后再次发送邮件请求时: post ‘/foo’ do # do nothing end 会话已清除。 为什么? 这是一个错误吗? 编辑 我已经缩小了问题范围:我通过nginx代理通过Sinatra,到http://app.local/backend – 这是问题发生的时候。 如果我通过http://localhost:4567运行Sinatra,它将按预期工作。 解 使用Rack::Session::Cookie而不是默认的enable :sessions : use Rack::Session::Cookie, :key => “rack.session”, :path => […]

Ruby:条件矩阵? 有多种情况的情况?

在ruby中,我想知道是否有办法做到以下几点: 我基本上有一个包含四种可能结果的矩阵: A is True, B is True A is True, B is False A is False, B is True A is False, B is False 我想以最干净的“ruby方式”为此写一个测试。 我希望能做类似的事情 case[A,B] when A && B then … when A && !B then … when !A && B then … when !A && !B then … end ……但那不起作用。 […]