Herokuよく使うコマンドメモ
Herokuでよく使うコマンドの覚書的メモ。よく忘れるからね。
アプリケーションを作成し、デプロイする
heroku create git push heroku master
アプリケーションの実行状態を確認
heroku ps
アプリケーションのスケールアップ(お財布と要相談)
heroku ps:scale web=2
アプリケーションのログを確認
--tailオプションでリアルタイムに確認可能
heroku logs heroku logs --tail
アプリケーションに対してコマンドを実行する
ただし、実行するサーバーはコマンド実行専用に立ち上がる仕様を把握しておこう。ファイルなどを直接更新しても永続化されない。
#bashでログイン heroku run bash #railsコンソールを起動 heroku run console #migrationを実行 heroku run rake db:migrate #psqlコマンドを実行する heroku pg:psql --app {appName} {dbName}
アプリケーションのメンテナンス状態を管理
heroku maintenance:on heroku maintenance heroku maintenance:off
環境変数を確認、設定する
ホスト名などいった設定値は、ソースに直接書くのではなく、環境変数を使うと便利。
#変数の一覧を取得 heroku config #変数を指定して取得 heroku config:get {keyName} #変数を設定 heroku config:set {keyName}={value} #変数を削除 heroku config:unset {keyName}
ソース内では次のようにENV変数で読み込める。
hostName = ENV['hostname']
アプリケーションを再起動
heroku restart #Dynoを指定して起動する場合はweb.xxを設定 heroku restart web.1
アドオンを追加
heroku addons:add {addonName} {addodOption}
Railsテスト関連のメモ
RSpecのセットアップ
./bin/rails g rspec:install
テスト用ファイルの雛形作成
#モデルのテスト ./bin/rails g rspec:model {modelName} #コントローラーのテスト ./bin/rails g rspec:controller {controllerName} #ビューのテスト ./bin/rails g rspec:view {controllerName} {actionName}
テストの実行
./bin/bundle exec rspec {specFileName}
FactoryGirl用ファイルの準備
./bin/rails g factory_girl:model {modelName}
Rails関連のコマンドのメモ書き
アプリケーションに設定されているrouteを確認する
./bin/rake routes
または、http://{site-name}:{port}/rails/info/routes でも確認可能(Rails4以降)。
controllerを追加する
./bin/rails g controller {controllerName}
railsでDB関連の操作
データベースの作成(初回)
./bin/rake db:create
データベースの更新、マイグレーションファイルの適用
./bin/rake db:migrate
現在のマイグレーションファイルの適用状況を確認する
./bin/rake db:migrate:status
modelを作成する
./bin/rails g model User {columnName}:{Type} ...
modelにカラムを追加する
./bin/rails g migration Add{columnName}To{tableName} {columnName}:{Type}
sqlite3 db/development.sqlite3
bundlerでrailsをインストールする
bundler以外はシステムに直接インストールせずに、railsをインストールする 以下、コマンドのメモ。よく忘れるからね。
$ mkdir myproject $ cd myproject $ bundle init # Gemfileのrailsのコメントを外す $ bundle install --path vendor/bundle #上書きするか?と聞いてくるのでyを入力 $ bundle exec rails new . # sqliteではないDBを利用する場合は-dオプションで指定する。 $ bundle exec rails new . -d postgresql # Gemfileのtherubyracerのコメントを外す $ bundle install --path vendor/bundle $ ./bin/rails server #hostやipを指定する場合は-bオプション $ ./bin/rails server -b 192.168.33.10
scaffoldでアプリのひな形を作成
./bin/rails generate scaffold myapp content:text
SublimeText 私的メモ
忘れたら、また覚えればよいの精神でメモ。
SublimeText My cheet sheet
マルチカーソル
- Command + u で選択を一個キャンセルする
- Command + Shift + L で選択を行単位にする
ウィンドウ操作
- Command + option + 数字 縦に分割する
- Command + option + Shift + 数字 横に分割する
- Ctrl + 番号 カーソルを所定のウィンドウへ移動させる
- Ctrl + Shift + 番号 所定のウィンドウへファイルを移動
編集
- Command + Shift + d カーソルがある行を複製する
- Command + Ctrl + up カーソルがある行または選択行を上へ移動させる
- Command + Ctrl + down カーソルがある行または選択行を下へ移動させる
コマンドパレット
- Command + Shift + p コマンドパレットを開く
- Command + p GoAnythingを開く
- @ GoAnythingでシンボルを指定する
- : GoAnythingで行を指定する
CTags
- Ctrl + t,Ctrl + t 定義部分へジャンプ
- Ctrl + t,Ctrl + b 呼び出し元へ戻る
- Ctrl + t,Ctrl + y 定義しているファイルにフォーカスを当てる
- Ctrl + t,Ctrl + r tagの再構成
OpenFL アプリの画面をPhotoshopとFlash Professionalで作る
Flashで作ったswfファイルを画面として取り込んで、表示することができます。
これだけだとAdobe AIRと変わらないですが、OpenFLはswfをインプットにしてコンパイルの段階で 各プラットフォーム用のプログラムを生成しているみたいです。これにより、AIRと比較した場合により高速に動作するし、ランタイムも必要ないのでプログラムのファイルサイズが小さくてすみます。
各パーツはSpriteやMovieClipとして取得してイベントや設定の変更を適宜実行することができます。
ということを試すためにサンプルでクイズアプリを作ってみました。デザインはご愛嬌。機能もペラペラです。
工程はこんな感じで進めることができます。
- PhotoShopで画面をデザインし、PSDファイルを作る
- PSDファイルをFlash Professionalで取り込んで、各パーツをシンボル化し、リンケージとインスタンス名を設定
- Flash ProfessionalでパブリッシュしたSWFファイルをOpenFLのプロジェクトに取り込む
- Haxeでコードを書いて開発していく
とてもよいのはPhotoshopで画面デザインができるということ。PhotoShopの成果をほぼそのままダイレクトにアプリまでもっていけます。 1をデザイナーさんにやってもらって、それ以降の工程をプログラマとかエンジニアとかがやっていけばOK。
このデザイナーさんとの協業の部分がヘタすると従来のFlashベースの開発よりもとてもシームレスにできそうな予感。
あとは製品リリースレベルの複雑なデザインがきた場合に 果たしてこの工程がそのまま使えて、OpenFLが耐えられるかどうか。これは実際にやってみないとわからないですね。
プロジェクト的には swfとlayoutというライブラリを使います。 project.xmlに次のように設定しましょう。
<haxelib name="openfl" />
<haxelib name="actuate" />
<haxelib name="swf" />
<haxelib name="layout" />
あとは自分で作ったswfファイルもライブラリとして指定しておきます。
<library path="Assets/ui.swf" />
アプリのソース内ではswfのファイル名とリンケージを指定してswfファイルにアクセスします。 今回はLayoutというリンケージをflaファイル内で指定しています。その配下のインスタンスはgetChildName関数で名前を指定すれば取得できて、そこから先はプログラミングの世界です。
Assets.loadLibrary ("ui", function (_) {
var layout = Assets.getMovieClip ("ui:Layout");
addChild (layout);
layoutManager = new LayoutManager (640, 960);
layoutManager.addItem (new LayoutItem (layout.getChildByName ("Button1"), LayoutType.STRETCH, LayoutType.STRETCH, false, false));
layoutManager.addItem (new LayoutItem (layout.getChildByName ("Button2"), LayoutType.STRETCH, LayoutType.STRETCH, false, false));
layoutManager.addItem (new LayoutItem (layout.getChildByName ("Button3"), LayoutType.STRETCH, LayoutType.STRETCH, false, false));
layoutManager.resize (stage.stageWidth, stage.stageHeight);
stage.addEventListener (Event.RESIZE, stage_onResize);
_button1 = cast(layout.getChildByName ("Button1"),Sprite);
_button1.addEventListener(MouseEvent.CLICK,function(event:MouseEvent):Void { checkAnswer(0); });
ソースコード全体はこちら。psdとflaファイルも付いてるよ。
z-ohnami/OpenFLQuizSample · GitHub
swfを更新した場合はlimeでビルドする際に-cleanオプションを使ったほうがいいみたい。 じゃないと、更新が反映されないことがあるようです。これでしばらくハマっていた・・・