2013-05-22 74 views
3

如何設置一個簡單的sinatra應用程序來使用MySQL和ActiveRecord?我找到了一些解決方案,但它們都沒有工作(也許他們已經過時):Sinatra,MySQL和ActiveRecord

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

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

那麼,什麼是最好的實踐方法,使用西納特拉與MySQL和ActiveRecord的相處?就我所見,gem僅適用於sqlite3。

我不確定是否需要模型或只是普通的SQL查詢。但讓它一起工作會對我有很大的幫助。

+0

你可以分享你的代碼? – draxxxeus

回答

14

這是一個簡單的Sinatra-MySQL-ActiveRecord應用程序。它有2個文件:

Gemfileapp.rb

的Gemfile:

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

app.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個文件
  2. bundle installgem install bundler如果你還沒有)
  3. ruby app.rb

你應該閱讀如何使用ActiveRecord插入數據。在這種情況下,您可以手動將一些數據從MySQL輸入到表中並查看輸出。

+1

'需要「rubygems」'是沒有必要的。這是自動包括截至紅寶石版本1.9.x + –

+0

我已經複製您的示例代碼,但我看到錯誤:在'救援const_missing':未初始化的常量ActiveRecord :: ConnectionAdapters :: AbstractAdapter :: SchemaCreation(NameError) 有任何想法嗎? – crobicha

+0

您是否首先安裝了捆綁軟件? – draxxxeus

1

您仍然可以使用sinatra-activerecord寶石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 
相關問題