3

如何设置一个简单的 sinatra 应用程序来使用 MySQL 和 ActiveRecord?我找到了一些解决方案,但都没有奏效(也许它们已经过时了):

http://ericfarkas.com/posts/sinatra-activerecord-and-mysql/

http://labs.thredup.com/setting-up-sinatra-with-mysql-and-activerecor

那么,将 Sinatra 与 MySQL 和 ActiveRecord 一起使用的最佳实践方法是什么?据我所知, https://github.com/janko-m/sinatra-activerecord gem 仅适用于 sqlite3。

我不确定我是否需要模型或只是简单的 SQL 查询。但是让它一起工作会对我有很大帮助。

4

2 回答 2

15

这是一个非常简单的 Sinatra-MySQL-ActiveRecord 应用程序。它有2个文件:

Gemfileapp.rb

宝石文件:

source :rubygems
gem 'sinatra', '1.3.1'
gem 'activerecord', '3.2.13'

应用程序.rb

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

ActiveRecord::Base.establish_connection(
  :adapter  => "mysql2",
  :host     => "host",
  :username => "user",
  :password => "password",
  :database => "db"
)

class User < ActiveRecord::Base
end

ActiveRecord::Migration.create_table :users do |t|
  t.string :name
end

class App < Sinatra::Application
end

get '/' do
  p User.all
end
  1. 创建这两个文件
  2. bundle installgem install bundler如果你没有)
  3. ruby app.rb

您应该阅读如何使用 ActiveRecord 插入数据。在这种情况下,您可以手动将一些数据从 MySQL 输入到表中并查看输出。

于 2013-05-22T11:38:45.717 回答
1

您仍然可以将sinatra-activerecordgem 与MySQL其他功能一起使用。

以下是它的使用方法:

require "sinatra/activerecord"

set :database, "mysql2://#{db_username}:#{db_password}@#{db_host}:#{db_port}/#{db_database}"

# Model
class User < ActiveRecord::Base
end 

get '/' do
  @items = User.all
  erb :index
end
于 2014-05-30T09:43:12.893 回答