heroku | |
![]()
ローカルでSinatraベース作成
参考にHello worldの例を...
require 'rubygems' require 'sinatra' get '/' do "Hello world" end
できたら、
ruby hoge.rb
で実行、そして http://localhost:4567/にブラウザでアクセスする。
config.ruはrequireを書き換える。
require 'myhello' ; run Sinatra::Application
ある程度動いたらデプロイ
$ git init $ git add .
まちがってadd したら、git rm --cached hogehoge で取り戻し
$ git commit -m "initial commit" $ heroku create $ heroku rename fugafuga $ git push heroku master
$ sequel sqlite://test.db
Your database is stored in DB...
irb(main):001:0> DB << "create table t (a text, b text)"
=> 0
irb(main):002:0> DB << "insert into t values ('a', 'b')"
=> 1
irb(main):003:0> DB['select a from t']
=> #<Sequel::SQLite::Dataset: "select a from t">
irb(main):004:0> dataset = DB['select a from t']
=> #<Sequel::SQLite::Dataset: "select a from t">
irb(main):005:0> dataset.count
=> 1
irb(main):006:0> dataset.map(a)
NameError: undefined local variable or method `a' for main:Object
from (irb):6
irb(main):007:0> dataset.map(:a)
=> ["a"]
irb(main):008:0> exit
$ ls
test.db test.rb
$ sequel sqlite://test.db
Your database is stored in DB...
irb(main):001:0> dataset = DB[:t]
=> #<Sequel::SQLite::Dataset: "SELECT * FROM `t`">
irb(main):002:0> dataset.map(:a, :b)
ArgumentError: wrong number of arguments (2 for 1)
from (irb):2:in `map'
from (irb):2
irb(main):003:0> dataset.map(:a)
=> ["a"]
irb(main):004:0> dataset.insert(:a => "hoge", :b => "fuga")
=> 2
irb(main):005:0> dataset.insert(:a => "hoge2", :b => "fuga2")
=> 3
irb(main):006:0> dataset.map(:a)
=> ["a", "hoge", "hoge2"]
irb(main):007:0> dataset.count
=> 3
irb(main):008:0> exit
これにほとんど集約されている。すばらしい。
require 'rubygems'
require 'sequel'
DB = Sequel.sqlite # memory database
DB.create_table :items do
primary_key :id
String :name
Float :price
end
items = DB[:items] # Create a dataset
# Populate the table
items.insert(:name => 'abc', :price => rand * 100)
items.insert(:name => 'def', :price => rand * 100)
items.insert(:name => 'ghi', :price => rand * 100)
# Print out the number of records
puts "Item count: #{items.count}"
# Print out the average price
puts "The average price is: #{items.avg(:price)}"
DB['select * from items'].each do |row|
p row
end
DB << "create table t (a text, b text)"
DB << "insert into t values ('a', 'b')"
sqlite | |
![]()
gem search sqlite してみた結果、'sqlite3-ruby'がそれっぽっかったのでインストールしてみた。
再度、確認してみる...... ビンゴ。
$ ruby test.rb Item count: 3 The average price is: 40.8936094764644
うまくいった。
sqlite | |
![]()
いかのようなエラー
/opt/local/lib/ruby/gems/1.8/gems/sequel-3.2.0/lib/sequel/database.rb:112:in `adapter_class': Could not load sqlite adapter: (Sequel::AdapterNotFound)
postgresql | |
![]()
サーバが起動している状態で以下のコマンドを実行
$ /opt/local/lib/postgresql84/bin/psql mydb
設定がうまくいってれば、現在のユーザでデータベースに接続しにいく。
以下のコマンドでバージョンが表示されればおk
# SELECT version();
postgresql | |
![]()
まずロールを作成する必要がある。
$ sudo -u postgres /opt/local/lib/postgresql84/bin/createuser snaka
デフォルトの'postgres'ユーザ権限で'snaka'を作成
すると普通にdb作成が完了。
$ /opt/local/lib/postgresql84/bin/createdb mydb
ちなみに、ロールを作ってないと以下のようなエラーが出た。
$ /opt/local/lib/postgresql84/bin/createdb mydb createdb: could not connect to database postgres: FATAL: role "snaka" does not exist
postgresql | |
![]()
org.macports.postgresql84-server.plist から、サーバ起動用スクリプトを特定。
/opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapperをviで開き、さっきinitdbしたディレクトリに変更。
#
# Start
#
Start()
{
su postgres -c "${PGCTL} -D ${POSTGRESQL84DATA:=/opt/local/var/db/pgsql/data} start -l /opt/local/var/log/postgresql84/postgres.log"
}
修正したら、以下のコマンドでサーバを起動してみる。
$ sudo launchctl start org.macports.postgresql84-server
エラー出てないので大丈夫っぽい。
postgresql | |
![]()
インストールした時点で専用ユーザ'postgres'が作成されていた
$ port contents postgresql84
で、インストーるされたファイルを参照、その中からindex.htmlが存在することを確認。
docディレクトリを全て~/Site/postgeress の下にcopyしてブラウザから参照可能に。(ほんとはSymLinkにしたかったけど、なんかできなかった...)
ドキュメントにしたがってDBの環境を用意。まずデータベースクラスタというのが必要らしい。
# su - # cd /opt/local/var/db # mkdir pgsql # su postgres $ cd /opt/local/lib/postgresql84/bin $ initdb -D /opt/local/var/db/pgsql/data
こんな感じでデータベース領域を初期化
今考えている内容は以下のとおり