Macにfabricを入れてherokuへデプロイしたい時につまずいた。
やろうとした事
fablicを使ってherokuにある本番へデプロイをしたい
環境
OS: OS X El Capitan 10.11.6 python : 2.7.0
pipをインストール
まずこのPCにはpipが入っていなかったのでpipをダウンロード。
sudo easy_install pip
動作確認
pip -V pip 9.0.1 from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (python 2.7)
fabricをインストール
pip install Fabric
インストールの確認
pip freeze asn1crypto==0.24.0 bcrypt==3.1.4 cffi==1.11.2 cryptography==2.1.4 enum34==1.1.6 Fabric==1.14.0 idna==2.6 ipaddress==1.0.19 paramiko==2.4.0 pyasn1==0.4.2 pycparser==2.18 PyNaCl==1.2.1 six==1.11.0
無事にfabricが入ったのでfabfileをつくる
デプロイのためのfabfile.pyをつくる
# -*- coding: utf-8 -*- from fabric.api import * from fabric.decorators import runs_once from datetime import datetime env.hosts = ['00.000.000.0'] env.user = 'ec2-user' env.key_filename = '~/.ssh/deploy_file.pem' env.project_root = '../' env.build_path = project_path env.config_path = project_conf_path env.branch = 'master' env.archive = '' env.server_api_dir = path @task @runs_once def build_play(): timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") env.archive = "api-%(timestamp)s.tar.gz" % {"timestamp":timestamp} with lcd(env.project_root): local("/usr/local/bin/activator clean stage") local("tar cvfz %(archive)s target" % {"archive":env.archive}) put("%(archive)s" % {"archive":env.archive}, "%(dir)s/" % {"dir" : env.server_api_dir}) local("rm %(archive)s" % {"archive":env.archive}) @task @runs_once def unck(): run("sudo rm -Rf %(dir)s/target" % {"dir" : env.server_api_dir}) run("tar zxvf %(dir)s/%(archive)s -C %(dir)s" % {"dir" : env.server_api_dir, "archive":env.archive}) @task @runs_once def deploy(branch=env.branch): execute(build_play) execute(unpack)
ここまでは順調
問題発生
fabricは問題なくお登勢てるにもかかわらずfabコマンドが動かない
deployディレクトリに移動してfab deployを叩くも失敗 どうしたもんか。。。 heroku側の設定も問題ないし、何より上のコマンドで先輩はdeployできている。
もうちょい調べる必要がありそうです。
scalaを勉強するにあたって使ったサイトとかをまとめる
基礎的な読み物
dowango新卒エンジニア向けの研修資料
対象/初学者
無料で読めてかつ基本的な概念や文法がよくまとまっているのでオススメです。 各章の最後に練習問題が付いているので理解度のチェックが簡単にできるのと難しい表現を使わないので読むのが億劫になりません。 基本の文法を覚えるなら日本語のドキュメントの中で一番いいかも。 2時間もあれば全部目を通せるのでなんども読み返す事ができていいです。
Scala公式サイト(※英語、一部日本語対応)
対象/javaからscalaに乗り換えの方、ある程度関数言語を知ってる方
本家のドキュメントです。 丁寧にガイドが書かれているのですが、個人的にちょっと読むのがしんどいです。 あと基礎的な言語に関する知識を必要とするので初めのうちのとりあえず動く感覚が欲しい時には向かない印象です。 メソッドや文法なんかは間違いないのでちょくちょく見に来ましょう。
scala school
対象/初心者、英語読むのが億劫でない人
割と実践的な内容を踏まえた包括的なサイトです。 twitterが自社での使い方を踏まえた上でカリキュラムを組んでいるので実践に近い感覚です。 ただほとんど英語なんで翻訳とかしながらやったりするにはちょっとしんどいかなとおもうのですが英語余裕な人はここから入門で十分ですね。
実践
paizaの無料のコンテンツをこなしたくらいです。 シンタックスとかツッコミをくれるのでいいですね。
僕は動かないと理解が深まらないんでguthubを徘徊してscalaのコードを手元で写経して動かすとかをしていました。 まだまだ勉強中なので続けます。
勉強に使った環境
動かしてなんぼだと思うので砂場を用意してサンプルの挙動を確認していました。
Mac OSX IDE :intellij idea playFramework2.5 scala
playFrameworkのscala worksheetと呼ばれる機能があるのでそれを使います。 リアルタイムにコンパイルの結果を返してくれるので非常に学習がはかどりました。
おまけ
Effective scala
twitterがまとめたscalaシンタックスのルールや実践コードでこういう書き方をするといいよ的なものをまとめたものです。
これに沿って書けば概ねルールを踏襲したシンタックスになるので、 お行儀の悪いコードにならなくていいと思います。
今度scala worksheetの使い方とかをまとめます。