shokosブログ

プログラミング

ActiveAdminでらくらくCRUDをつくる

shokos Advent Calendar 2012一日目

rails ActiveAdminでらくらくCRUDをつくる!
Active Admin | The administration framework for Ruby on Rails

スケジュール管理アプリ、Popuraをつくりました。

rails new Popura

がーっとファイルやフォルダが作られ、インストールも走ります。
プロジェクトに移動。

cd Popura

Gemfileを開いて下記を追加。

gem 'activeadmin'

インストールコマンドを走らせます。

bundle install --path vendor/bundler
rails generate active_admin:install

DB定義をします。

rails g model schedule plan:string summary:string occurred_at:date

DB反映。あ、デフォルトはsqlite3だよ。config/database.ymlに設定があります。

rake db:migrate

scheduleのCRUDをつくります。

rails g active_admin:resource schedule

これで準備おっけー!起動しましょう。

rails server

http://localhost:3000/admin/loginにアクセス

f:id:syoko_sasaki:20121201191232p:plain

下記初期アカウントでログイン。
email:admin@example.com
password:password

ヘッダーメニューからscheduleに移動。早速データがつくれます!

f:id:syoko_sasaki:20121201191846p:plain



ところで私事ですが、先日結婚して佐々木から島崎になりました。
また、転職してドワンゴ社員からCA社員になりました。
今後ともよろしくお願いします!

Jenkinsがテストこけているのにグリーンになる件解決

Jenkinsをバージョンアップ(1.475)したら、失敗したテストがあるのにグリーンになる珍現象が起きた。

解決方法メモ

  1. 各プロジェクトの設定画面
  2. ビルド後の処理追加で「publish xUnit test result report」を選択
  3. Faild TestsのThresholds(しきい値)をすべて0に

f:id:syoko_sasaki:20120815112414p:plain


テスト失敗のしきい値を1以上にするなんてありえないし、この設定項目バッドノウハウすぎでは、あとデフォルトで0にしてくれよと声を小にして言いたい

追記:デフォルトで0じゃないのおかしくね?ってバグレポートしました。

非エンジニアにgitをレクチャーする

  • レクチャーしたいターゲット

・ エンジニアではない(エンジニアは自分でちゃんと勉強しましょう)
・デザイナーさん等、ローカルでwebアプリケーションを確認しながらマークアップ編集したり、画像を追加したりする感じで、あまりロジック部分はいじらない
svnは使ったことがある(コマンドラインからだとうれしいけれど、GUIでも)
コマンドラインはあまり使ったことがなくてもOK


  • 推奨環境

・gitはコマンドラインから使ってもらう
・チームでのブランチの管理はきちんと(masterに直接コミットしないルール/ターゲットがデザイナーさんならデザイナーさん専用のブランチがあり、定期的にエンジニアがmergeしてあげる等)
・基本的にターゲットが見るブランチは1つ


  • gitの説明

svnが少し複雑になったものです(svnとの差分は必要に応じて説明)


  • 導入

・公開鍵作成、登録、clone、ブランチチェックアウトまではやってあげるといいかも


  • svnのアップデートにあたることをやってもらう
$ git pull origin ブランチ名

 


  • conflictって出た

・駆けつけてなんとかしてあげましょう
・どうしても頻発が免れない状況なら、rebaseをレクチャー


  • 前コミットした状態に戻してもらう

・いろいろ試しに編集してよくわからなくなってしまったので、前コミットした状態に戻したいという場合

$ git reset --hard

 


  • みんなのコミットログを見てもらう
$ git log

変更した中身までみたい場合は

$ git log -p

 


  • svnのコミットにあたることをやってもらう

・ まず、編集や追加をしたファイルを確認してもらいます

$ git status

編集したファイル、追加したファイルの一覧が出ると思います
「あれ?これ編集した覚えないぞ?」
というのがあったら、

$ git diff ファイル名

で差分を確認(すべてのファイルで差分は確認してもらいたいけど、それは必要に応じてでいいかなと)

     ( getApplication
     , getApplicationDev
     ) where
-
 import Import
 import Settings
+
 import Yesod.Auth
 import Yesod.Default.Config

+が追加、-が削除行です
改行が入り込んだ等で、もとの状態に戻したい場合、

$ git checkout HEAD ファイル名

でもとに戻してもらいます(ファイルを直接編集してもいいけど)
・ いざコミット
まず、追加や変更のあったファイルを、コミット候補に追加します

$ git add ファイル名

次にコミット

$ git commit -m "コミットメッセージ"

続けて、サーバーに変更を送信

$ git push origin ブランチ名

 


  • その他

・開発側がガンガン変更するブランチとターゲット用ブランチは分けて、定期的にmergeするのがいいかと思います。mergeしたらターゲットにpullしてもらう
・pushするとき、ブランチ名に絶対に:が入らないように注意してもらう


エンジニアは本渡して勝手に勉強してもらって、後はペアプロでやればおkだと思っていますが、
エンジニア以外にレクチャーするのは初の試みなので書いてみました
なにかアドバイス等ありましたら教えてほしいです

Haskell Platform 2012.2.0.0を入れたよ!

6月3日、わたしの誕生日かつ結婚式の翌日にHaskell Platform 2012.2.0.0がリリースされたようです!!

Download Haskell

Haskellからの結婚祝い&誕生日祝いだと思えるくらい、うれしい機能追加が。

@shelarcy さんがGoogleGroupのHaskell-jpにまとめてくれているのですがGoogle Groupsわたしからもいくつかご紹介

まずalexが3系になったおかげで、日本語の扱いが素晴らしく楽になりました。

main = writeFile "ほげ.txt" "ああああ"

今までSystem.IO.UTF8等をimportしなければならなかったのが、標準ライブラリで日本語が扱えるように。

あと、ghciでdata宣言もできるようになりました。

Prelude> :{
Prelude| data Hoge = Foo | Piyo
Prelude|     deriving(Eq, Show)
Prelude| :}
Prelude> Foo == Foo
True


インストールですが、「古いghcを捨てよ」と言われるので、事前に

$ sudo /Library/Haskell/bin/uninstall-hs thru 7.0.4 --remove

しておくとよいです。

ghc7.0.4で、バイト文字列を日本語ファイル名で保存する方法

環境はmac、ghc7.0.4

yesodアプリケーションで、アップロードされた画像ファイルをローカルに保存するときに、日本語ファイル名だと文字化けしてしまう問題が発生した。

どうやらghc7.0.4は日本語ファイル名に対応していないっぽい。

Haskell-jaに質問を投げてアドバイスをもらった結果、ファイル名をCodec.Binary.UTF8.String. encodeStringでenncodeしてあげるとうまくいった!

import Data.ByteString as B
import Codec.Binary.UTF8.String as S

main :: IO ()
main = do
    body <- B.readFile "hoge.jpg"
    B.writeFile (S.encodeString "ほげ.jpg") body

もしバイト文字じゃなくただの文字列の場合は、System.IO.UTF8のwriteFileで日本語ファイル名が保存できる。
ghc7.4からは日本語ファイル名対応するらしいので、はやく付属のHaskell Platformがでてほしいところ。

Bundleでghc-modをいれる方法

Bundleでghc-modをいれる方法

  • Bundleを持ってくる
$ cd ~/.vim
$ git clone http://github.com/gmarik/vundle.git ~/.vim/vundle.git
  • vimrcにインストールしたいものを追加

vimrcのトップに書く

set nocompatible
filetype off

set rtp+=~/.vim/vundle.git/
call vundle#rc()

" for ghcmod.vim
Bundle 'Shougo/vimproc'
Bundle 'eagletmt/ghcmod-vim'

" for neco-ghc
Bundle 'ujihisa/neco-ghc'
Bundle 'Shougo/neocomplcache'

" for Syntastic
Bundle 'scrooloose/syntastic'

filetype plugin indent on

Bundleの使い方についてはこちらVim-users.jp - Hack #215: Vundle で plugin をモダンに管理する


  • :BundleInstall実行

vimでファイルをひらいて、:BundleInstall実行。
インストールdoneまで待つ。


  • make実行
$ cd ~/.vim/bundle/vimproc
$ make -f make_mac.mak

ちなみにmacだからファイル名がmake_mac.makってなっているかんじ


  • ghc-mod持ってくる
$ cabal install ghc-mod
  • ghc-modのパスを通す
  • vimで.hsファイルひらいてみる

ghc-mod 1.10.11を持ってこいよ。と言われたので、cabal install ghc-mod-1.10.11とパス通すのをやり直し。

再度vimで.hsファイルを開くとできてるー!!!!

yesod0.10をいれてcabal installしたらコケた問題

開発環境:mac、ghc7.0.4

新しく作ったyesodプロジェクトで、cabal installすると下記エラーがでた。

Resolving dependencies...
Configuring language-javascript-0.4.9...
cabal: The program alex version >=3.0 is required but the version found at
/usr/bin/alex is version 2.3.5
cabal: Error: some packages failed to install:
happiage-0.0.0 depends on language-javascript-0.4.9 which failed to install.
hjsmin-0.0.15 depends on language-javascript-0.4.9 which failed to install.
language-javascript-0.4.9 failed during the configure step. The exception was:
ExitFailure 1

cabal install alexして、バージョン3.0以上のalexを持ってくる。
/usr/bin/alexを、持ってきたalex実行ファイルに置き換えて、もういっかいcabal installしたらできた!

yesodは設定でいろいろコケるけど、たいへん素晴らしいwebフレームワークなので、どこかでチュートリアル的な記事書きたいところ。