【问题标题】:Selecting table records using Sinatra and ActiveRecord?使用 Sinatra 和 ActiveRecord 选择表记录?
【发布时间】:2018-06-30 16:30:35
【问题描述】:

我正在尝试使用 ActiveRecords 查询我与 Sinatra 一起设置的 MariaDB。

我的表架构如下

MariaDB [orbital]> select * from posts
    -> ;
+----+------+------+----------+
| id | user | post | location |
+----+------+------+----------+
|  1 | 100  | 100  | 100      |
+----+------+------+----------+
1 row in set (0.00 sec)

Sinatra 设置了 Unicorn 和 Nginx 来代理请求。

MyApp.rb

require 'rubygems'
require 'sinatra'
require 'active_record'
require 'table_print'

ActiveRecord::Base.establish_connection(
  :adapter  => "mysql2",
  :host     => "localhost",
  :username => "root",
  :database => "orbital"
)

class Post < ActiveRecord::Base
end

class MyApp < Sinatra::Application
  get '/' do
    p Post.all
  end
end

我使用 Kurly 到 `kurly -X GET -k localhost

我收到以下错误:

HTTP/1.1 500 Internal Server Error

我曾尝试修改 ruby​​ 文件,但得到不同的结果。使用 table_print 将允许页面以 0 字节加载。我确定我错误地使用了 ActiveRecord 或设置了不正确的东西,并且希望有一个有用的示例来从我的表中选择数据。

【问题讨论】:

  • 只是一个愚蠢的问题:如果你变成字符串'Post.all',它会打印到浏览器吗?
  • Post.all 似乎不起作用,但我设法找到了一种使用Post.to_yaml 打印出条目的方法

标签: ruby nginx sinatra mariadb unicorn


【解决方案1】:

我可以建议您将该代码捕获到异常中并检查异常消息以查看它是否使用简单的puts 引发了一些重要的事情。如果这不起作用,您可以使用调试器检查确切的错误和错误原因。

establish_connection 方法可能配置错误。也许凭据错误或其他原因。

我使用的一个很好的调试器是pry,你可以将它添加到你的Gemfile,将gem导入你的控制器文件并使用binding.pry进入调试器模式。

【讨论】:

    猜你喜欢
    • 2011-10-14
    • 2015-06-23
    • 2013-05-17
    • 1970-01-01
    • 2011-01-18
    • 2011-08-01
    • 2012-03-01
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多