$ gsutil cp foo_*.csv gs://my-bucket-name/
便利ですね。
404などのページをassets pipelineを使って作れるgakubuchi gemを使っています。
capistranoでデプロイする時、これのassets:precompileで落ちてデプロイできてないことがよくある。(落ちないこともある)
もう一度デプロイすると動くので騙し騙し使っている。デバッグしないとなあ・・・。
Tasks: TOP => deploy:assets:precompile
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as root@app1.kowabana.jp: rake exit status: 1
rake stdout: I, [2016-09-16T10:01:36.563918 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/blocks-25f0ada07701275b817165481ea227bf448e4b33b160e18e4e4e5ff988e4ec06.css
I, [2016-09-16T10:01:36.565468 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/blocks-25f0ada07701275b817165481ea227bf448e4b33b160e18e4e4e5ff988e4ec06.css.gz
I, [2016-09-16T10:01:48.018613 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-ed4db3deeeed188beda19cdd3571fffe28eac2adfd49a4c948d14dee05076639.js
I, [2016-09-16T10:01:48.019534 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-ed4db3deeeed188beda19cdd3571fffe28eac2adfd49a4c948d14dee05076639.js.gz
I, [2016-09-16T10:01:56.640992 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-36e5ebe3ef6a536d04cf635d1343bbfb50cd9c2de9b70bec0d72b0469565bf1c.css
I, [2016-09-16T10:01:56.641414 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-36e5ebe3ef6a536d04cf635d1343bbfb50cd9c2de9b70bec0d72b0469565bf1c.css.gz
I, [2016-09-16T10:01:56.804354 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/404-f5b8eac98ade00d0f719281af5b7b9103e7403700bda2ea175fefb8fff1ccfc5.html
I, [2016-09-16T10:01:56.805071 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/404-f5b8eac98ade00d0f719281af5b7b9103e7403700bda2ea175fefb8fff1ccfc5.html.gz
I, [2016-09-16T10:01:56.848952 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/406-67bca5a0e35c21ad811db2b88cca0ea5537cf59d85269977c274cb94dee913aa.html
I, [2016-09-16T10:01:56.849368 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/406-67bca5a0e35c21ad811db2b88cca0ea5537cf59d85269977c274cb94dee913aa.html.gz
I, [2016-09-16T10:01:56.905607 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html
I, [2016-09-16T10:01:56.906426 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html.gz
I, [2016-09-16T10:01:56.962076 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html
I, [2016-09-16T10:01:56.962528 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html.gz
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /srv/kowabana.jp/releases/20160916010102/public/assets/406-1a8f57ba17cdbf23ab495f461eea0f1e844b30e0789aab4c933385017f437c27.html
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/fileutils.rb:8:in `copy_p'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:15:in `block in execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `each'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/tasks/after_precompile.rake:3:in `block in <top (required)>'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `load'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
rake stderr: Nothing written
** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:
DEBUG [3390349e] I, [2016-09-16T10:01:56.905607 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html
DEBUG [3390349e]
DEBUG [3390349e] I, [2016-09-16T10:01:56.906426 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html.gz
DEBUG [3390349e]
DEBUG [3390349e] I, [2016-09-16T10:01:56.962076 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html
DEBUG [3390349e]
DEBUG [3390349e] I, [2016-09-16T10:01:56.962528 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html.gz
DEBUG [3390349e]
DEBUG [3390349e] rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /srv/kowabana.jp/releases/20160916010102/public/assets/406-1a8f57ba17cdbf23ab495f461eea0f1e844b30e0789aab4c933385017f437c27.html
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/fileutils.rb:8:in `copy_p'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:15:in `block in execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `each'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/tasks/after_precompile.rake:3:in `block in <top (required)>'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `load'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
GAEやappengineなど表記が揺れててどうもググラビリティが低いので併記してみました。
環境
homebrewでapp engine sdkを入れています。
% brew list |grep app-engine
app-engine-go-64
GAE用のGOPATH設定
普通のgoと違ってPaaSの性質上GAEでは使えない機能がある。そういったライブラリを読み込んでるとコンパイルできないので、普通のgoとGAEではGOPATHの設定を変える必要がある。ややこしい。
GAE用のGOPATH設定はいくら調べてみてもこれで決まりというのがわからなかった。いくつかある中で、未設定ならばsdk内のデフォルトが使われるようなのでdirenvでunsetするという方法をとることにしました。
通常のGOPATHは~/
に設定しています。通常のGO用のライブラリはここに入り、GAE用はsdkの中に入るという認識。
GAE用のプロジェクトの直下に下記を置く。
# .envrc
unset GOPATH
% env | grep GOPATH
もちろん空。
% goapp env | grep GOPATH
GOPATH="/usr/local/Cellar/app-engine-go-64/1.9.31/share/app-engine-go-64/gopath"
goapp経由でみるとsdkの場所が指定されています。
% goapp get goji.io
# goji.io
/usr/local/Cellar/app-engine-go-64/1.9.31/share/app-engine-go-64/gopath/src/goji.io/mux.go:84: r.URL.EscapedPath undefined (type *url.URL has no field or method EscapedPath)
gojiをgetしようとするとエラーがでる。
/*
ServeHTTPC implements Handler.
*/
func (m *Mux) ServeHTTPC(ctx context.Context, w http.ResponseWriter, r *http.Request) {
if m.root {
ctx = context.WithValue(ctx, internal.Path, r.URL.EscapedPath())
}
ctx = m.router.route(ctx, r)
m.handler.ServeHTTPC(ctx, w, r)
}
ソースを読んでみたが、なぜr.URL.EscapePath()がundefinedなんだろう?m.rootとはなんだろう。GAEと関係あるんだろうか。
vim8.0がリリースされたようです。
Vim 8.0 released! - Google グループ
Asynchronous I/Oとchannelが気になります。golangのchannelみたいなものかな?
これでasyncなsyntasticが普通な感じになったら嬉しいです。
というか今それが普通じゃないのがキツイですね。
とりあえず日本の祝日のデータのyamlのみを含んだ holiday-jp/holiday_jp リポジトリを作りました。
https://github.com/holiday-jp/holiday_jp
従来のgemのreposは holiday-jp/holiday_jp-ruby になります。
holiday-jp/holiday_jp-ruby: Japanese holiday.
holiday_jp-rubyとかholiday_jp-phpとか作ってgit submoduleでyamlのrepoを取り込む感じで。
RubyKaigi中は過去に手をかけられてなかった自分のgemをメンテする絶好のタイミング。
pull requestいただいたmergeしてるけどrubygemsにpushしてないgemがよくあるのでこの機会にリリース。
holiday_jp | RubyGems.org | your community gem host
organizationに移る前に、色々PRを貰ってたのでリリースしました。祝日に山の日が増えてます。
RubyKaigi 1日目、各発表は他所のレポートをみていただくとして、Official Partyはやはり大事ですね。
@k1LoWさんとお話させていただく。
holiday_jpをwootheeみたいにorganization作って、言語非依存のyml(各言語用ライブラリではgit submoduleで読み込む)だけにしてはどうかという話。
それがいいですね。今夜やります。
やりました。
@morygonzalezさんとお話。
- Lokkaを今までのしがらみすてて作りなおそう。
- 2人しかいないのにLokkaKaigiやって沢山人いる風にみせよう。
- 福岡ダンボール問題。
- リモートワーク手放しで賞賛するな問題。
ステッカー貰いました。
@toyoshiさんとお話。
- misocaのチーム構成やマネジメントの話。
- 企業と連携の仕方。
- 名古屋は紹介が重い話。(ちょっと親しいぐらいでは紹介しない問題)
僕らも今企業向けのサービスを作っているところなので非常に参考になる話をお聞きしました。
インターン、元インターンの方々とご挨拶。毎年のことですがリモートでやっててはじめましての人も多い。
しょうもない俺達と長く話さず沢山の知らない人にどんどん声をかけようという話。