小编fea*_*ool的帖子

在Heroku中运行Rails 2.3样式插件和弃用警告运行任务

我正在升级到Rails 3.2,运行rake db:migrate会给我带来几个错误:

弃用警告:您在供应商/插件中拥有Rails 2.3风格的插件!在Rails 4.0中将删除对这些插件的支持.移出它们并将它们捆绑在Gemfile中,或者将它们作为lib/myplugin/*和config/initializers/myplugin.rb折叠到您的应用程序中.有关详细信息,请参阅发行说明:http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released.(从/ app/Rakefile调用:7)

令人困惑的是我的vendor/plugins目录是空的 - 是否有另一个引用的插件目录?

ruby-on-rails heroku ruby-on-rails-plugins

155
推荐指数
3
解决办法
2万
查看次数

Rails:将UTC DateTime转换为另一个时区

在Ruby/Rails中,如何将UTC DateTime转换为另一个时区?

ruby datetime runtime ruby-on-rails

108
推荐指数
3
解决办法
8万
查看次数

如何检查是否定义了类?

如何将字符串转换为类名,但仅限于该类已存在?

如果Amber 已经是一个类,我可以通过以下方式从字符串到类:

Object.const_get("Amber")
Run Code Online (Sandbox Code Playgroud)

或(在Rails中)

"Amber".constantize
Run Code Online (Sandbox Code Playgroud)

NameError: uninitialized constant Amber如果Amber还没有上课,那么其中任何一个都会失败.

我的第一个想法是使用该defined?方法,但它不区分已存在的类和不存在的类:

>> defined?("Object".constantize)
=> "method"
>> defined?("AClassNameThatCouldNotPossiblyExist".constantize)
=> "method"
Run Code Online (Sandbox Code Playgroud)

那么在我尝试转换之前,如何测试字符串是否命名一个类?(好吧,begin/ rescueblock如何捕获NameError错误?太丑了?我同意......)

ruby class defined ruby-on-rails-3

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

如何将STDOUT捕获到字符串?

puts "hi"
puts "bye"
Run Code Online (Sandbox Code Playgroud)

我想存储到目前为止的代码的STDOUT(在这种情况下,hi \nbye变成一个变量说'结果'并打印出来)

puts result
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是我已经将R代码集成到我的Ruby代码中,当R代码运行时,其输出被提供给STDOUT,但是在代码内部无法访问输出以进行一些评估.对不起,如果这令人困惑.因此,"放置结果"这一行应该让我高兴和再见.

ruby stdio

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

如何处理基于JSON的RESTful代码中的异常?

我有一个"软件即服务"应用程序,它使用通过RESTful API传递的JSON.

简单地说:在使用带有JSON数据交换的RESTful API时,捕获和报告异常的最佳实践是什么?

我的第一个想法是通过生成脚手架来看看Rails的作用,但这显然是不对的.这是一段摘录:

class MumblesController < ApplicationController

  # GET /mumbles/1
  # GET /mumbles/1.json
  def show
    @mumble = Mumble.find(params[:id])
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @mumble }
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果JSON代码发送不存在的ID,例如

http://www.myhost.com/mumbles/99999.json
Run Code Online (Sandbox Code Playgroud)

那么Mumble.find()将引发ActiveRecord :: RecordNotFound.ActionController将捕获它并在HTML中呈现错误页面.但HTML对于期望JSON的客户端来说是无用的.

我可以通过将Mumble.find()包装在一个begin ... rescue RuntimeError块中并渲染JSON status =>:unprocessable_entity等来解决这个问题.

但是,如果客户端的应用程序发送无效路径,例如:

http://www.myhost.com/badtypo/1.json
Run Code Online (Sandbox Code Playgroud)

是一个基于JSON的应用程序应该捕获并返回JSON中的错误?如果是这样,我在哪里捕获它而不深入ActionDispatch?

总的来说,如果出现错误,我是否应该让ActionController生成HTML?那感觉不对......

json ruby-on-rails actioncontroller

33
推荐指数
3
解决办法
2万
查看次数

获取Nokogiri中属性的值以提取链接URL

我有一个看起来像这样的文件:

<div id="block">
    <a href="http://google.com">link</a>
</div>
Run Code Online (Sandbox Code Playgroud)

我无法让Nokogiri获得href属性的价值.我想将地址存储在Ruby变量中作为字符串.

ruby ruby-on-rails nokogiri

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

使用Heroku开始(不是):找不到应用程序

这应该很简单,我发誓这是一个小时前工作的.我可以登录Heroku,但无法运行任何有用的命令:

$ heroku login
Enter your Heroku credentials.
Email: xxx@whatever.com
Password: 
$ heroku stack
App not found
$ heroku config
App not found
Run Code Online (Sandbox Code Playgroud)

也许这是问题的根源?

$ git remote show heroku
!  No such app as empty-samurai-345
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

empty-samuri-345是我之前删除的应用程序.我真正想做的就是使用bamboo-mri-1.9.2堆栈上传一个新的应用程序.

提前感谢您的建议......

heroku ruby-on-rails-3

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

Devise和stored_location_for:你如何存储返回位置?

我有一个页面的路径是(例如)/ premises/92我正在显示"请[登录]或[注册]以获取更多信息"如果用户没有登录,我想要设计返回相同的用户登录后的/ premises/92页面.

我已经阅读了其他帖子,我想我理解设计stored_location_for应该如何工作.理论上,我可以把这样的东西放在我的ApplicationController:

def stored_location_for(resource)
  if (r = session[:return_to])
    session[:return_to] = nil
    r
  else
    super
  end
end
Run Code Online (Sandbox Code Playgroud)

我的问题是:我如何/在哪里设置会话[:return_to]?

我只想在用户点击[登录]或[注册]时设置会话[:return_to],但最好的方法是什么?

  • 用JavaScript装饰链接?这可行,但似乎很苛刻.
  • 在渲染页面之前将它设置在Premises Controller中?这似乎不正确:如果用户没有点击[登录]或[注册]链接怎么办?然后我将session [:return_to]设置为某个奇数值,如果用户从其他页面登录,可能会让我失望.
  • ?return_to=/premises/92查询字符串添加到[登录]和[注册]链接,并在RegistrationsController和SessionsController中检测并使用该信息设置会话[:return_to]?这似乎会起作用,但也很苛刻.

这些都闻不对劲.为stored_location_for设置状态的普遍接受的技术是什么?

redirect devise ruby-on-rails-3

27
推荐指数
3
解决办法
2万
查看次数

如何手动将Cookie添加到Mechanize状态?

我在Ruby工作,但我的问题也适用于其他语言.

我有一个机械化驱动的应用程序.我正在谈论的服务器使用JavaScript(而不是标准的set-cookie)设置cookie,因此Mechanize不会捕获cookie.我需要在下一个GET请求中传回该cookie.

好消息是我已经知道cookie的价值,但我不知道如何告诉Mechanize将它包含在我的下一个GET请求中.

ruby cookies mechanize

22
推荐指数
2
解决办法
2万
查看次数

Ruby:创建一个沙盒评估?

我的Rails应用程序有关于何时应在页面上显示一些内容的复杂规则.我决定通过在Ruby中编写谓词(简单的"是/否"函数)并将它们存储在数据库中以便随后进行评估来实现这一点.这很简单.

我主要担心的是安全性:如果恶意某人弄清楚如何写入数据库,他们可能会在数据库中粘贴任意Ruby代码,然后" 所有基础都属于我们 ".

那么是否可以创建一个"沙盒"eval,例如,删除了所有IO操作?

ruby eval ruby-on-rails sandbox

21
推荐指数
3
解决办法
7772
查看次数