LoginSignup
4
0

More than 5 years have passed since last update.

postgreSQLでYesodのサンプルプログラムの実行まで

Last updated at Posted at 2017-03-25

構築環境

  • 装置スペック
    • CPU : i5-4310M 2.70GHz
    • RAM : 8.0GB
    • OS : Microsoft Windows 10 Pro 64Bit

Haskell Stackのインストール

  • Download Haskell Stack

    • OSを選び、ダウンロード(windowsだと普通にダウンロード、macOSやLinuxだとwget・curlを使ってダウンロードできる)
  • Haskell Stack の設置確認

    • HelloWorld.hsの作成
    #!/usr/bin/env stack
    -- stack --install-ghc runghc
    main :: IO ()
    main = putStrLn "Hello World"
    
    • terminalでstack haskellを入力し、「Hello World」の出力を確認

プロジェクト作成

  • scaffolded site templateのpostgreSQL版でpgcrudフォルダを作成
  stack new pgcrud yesod-postgres
  stack build yesod-bin cabal-install --install-ghc
  stack build
  • stack buildで pg_config.exe が見つけられないとエラーが出たら、postgreSQLのbinフォルダを環境変数に追加(C:\Program Files\PostgreSQL\9.3\bin
    • Windows PowerShellではpg_config.exeが取れないので、cmd上で実行すること

posrgreSQLでユーザとDBを作成(pgAdminⅢのlocal serverで実行)

  • ユーザの生成:ログインロールを右クリックし、「新しいログインロール」でユーザを二つ追加する

    ロール名:kwon
    パスワード:kwon
    
  • DBの生成:データベースを右クリックし、「新しいデータベース」で実際使うDBとテスト用のDBを作成する

    名前:yesod
    オーナー:kwon
    

Yesodでのデータベース接続設定

  • ここではプロジェクト名に合わせてユーザやDBを作成すると書いてあるが、実際はconfig/settings.ymlでDBのsettingが普通にできる

    database:
          user:     "_env:PGUSER:kwon"
          password: "_env:PGPASS:kwon"
          host:     "_env:PGHOST:localhost"
          port:     "_env:PGPORT:5432"
          database: "_env:PGDATABASE:yesod"
          poolsize: "_env:PGPOOLSIZE:10"
    
  • test用のDBも設定したいなら、config/test-setting.ymlで他のDB(オーナーは同じく)だけを設定する。

    database:
          database: yesod_test
    

プログラム稼働

  • stack exec -- yesod devel
  • これを実行すると、つなげたDBにサンプルデータのテーブルが生成される(comment, email, user)
  • テストも実行してみたいなら、stack testで、設定したyesod_testDBにテーブルができたらOK
  • http://localhost:3000/ に接続し、Comment作成やユーザ登録などでDBが更新されるかを確認する。
  • ここまで設定したら、他の作業はsqliteでのと同じなので ここ などを参考し、次の実装をしてもOK

参考

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0