Rubyと筋肉とギターとわたし

筋トレが仕事です

【Docker】railsコンテナでbundle installしているのにCould not find gemと出る

f:id:rdwbocungelt5:20180816164743p:plain

どうもてぃです。

既存プロジェクトをdocker-composeで構成作るということで結構苦労してます。

いくつかトラブルがあったんですが、その中でも題にあるエラーで苦しみました。

環境

  • Docker version 18.09.7, build 2d0083d
  • docker-compose version 1.25.4, build unknown
  • rails 5.2.0

試したこと

以前も同じようなエラーが出たのでvolume関係で怒られているんだろうなと、検討をつけて対処しようとしました。

参考にしていたのがこちらの記事。

qiita.com

最後の対応にあったvolumeを削除するパターンを試しました。

volumeを一回削除し再度作成することによって、volumeの中身を/usr/local/bundleと同じにする

こちらですね。

僕が作成したプロジェクトではskip bundleは行っていなかったですし、bundle installも試していましたので、最後の頼みの綱、すがる思いで試してみました。

が、駄目でした。

同じBundler::GemNotFound: Could not find gemです。謎…

1から手順を見直す

手順を見直したとき、docker-composeを使ってrails newを行っていなかったことを思い出しました。

つまり、Dockerfileから先にimageを作成して、そのイメージを元にrails newしたということです。

で、 docker-compose buildした際に、先に作成したimageを指定してbuildしていなかったので、Gemfileで差が出た…と。

馬鹿じゃん自分。

解決策

めっちゃ簡単。

Gemfile.lockを削除してビルドし直すだけ。

$ rm Gemfile.lock; touch Gemfile.lock

$ docker-compose run <コンテナ名> bundle install

しょうもないことに1時間ほど費やしてしまいました。

もう二度と同じ轍を踏まないです。

ここに誓います。

追記(2021/01/27)

docker-compose.yml関連で一点ハマったので。

version: '3'

services:
  postgres:
    image: postgres:10-alpine
    container_name: postgres
    volumes:
      - postgres-data:/var/lib/postgresql/data
      - ./docker/init/db:/docker-entrypoint-initdb.d
    ports:
      - '5555:5432'
  redis:
    image: redis:alpine
    container_name: redis
    ports:
      - '6379:6379'
    volumes:
      - redis-cache:/var/lib/redis/data
  web:
    build: .
    image: app
    command: bash -c 'rm -f tmp/pids/server.pid && bundle exec rails s -b 0.0.0.0 -p 3000'
    container_name: app
    ports:
      - '3000:3000'
    volumes:
      - .:/myapp:cached
      - /myapp/log
      - /myapp/.git
      - /myapp/tmp
      - /myapp/node_modules
      - /myapp/vendor # <- こいついらん
      - bundle:/usr/local/bundle
    tty: true
    stdin_open: true
    depends_on:
      - postgres
      - redis
  worker:
    build: .
    image: worker
    command: bundle exec sidekiq -C config/sidekiq.yml
    container_name: worker
    volumes:
      - .:/myapp
    depends_on:
      - postgres
      - redis

volumes:
  bundle:
    driver: local
  postgres-data:
    driver: local
  redis-cache:
    driver: local

vendor配下に設置していると、bundle installしても更新されません。

要注意。

【Vim】Vim歴三年目に突入するので、やっと操作系を覚える

どうもてぃ。

dein.vim.vimrc 読み込まれない問題は解決(?)したのですが、それはまたの機会に書くとして、流石にvim操作をきちんと抑えておこうと思い、この記事を書くにあたりました。

知らないもの、便利なものめっちゃあってビビりました。

今更感半端ないですが、メモ・備忘録として残して毎日見るようにしたいと思います。

中身削除系

括弧のどの位置でも適応可能。

<>, {}, [], '', ""も同様に削除できる。

以下同じ仕様

コマンド 動作
di( または di) 括弧内削除
da( または da) 括弧ごと削除
yi( または yi) 括弧内をヤンク
ya( または ya) 括弧ごとヤンク
vi( または vi) 括弧内選択
va( または va) 括弧ごと選択
ci( または ci) 括弧内を削除してインサートモード
ca( または ca) 括弧ごと削除してインサートモード

htmlタグ

コマンド 動作
cit タブの中身を消去してインサートモード
vit タブの中身を選択
dit タブの中身を削除
yit タブの中身をヤンク

カーソル単語系

コマンド 動作
viw カーソル上の単語を選択
diw カーソル上の単語を消去
yiw カーソル上の単語をヤンク
ciw カーソル上の単語を削除してインサートモード

カーソルから特定位置

コマンド 動作
dt) カーソル位置から閉じ括弧まで削除
ct) カーソル位置から閉じ括弧まで削除してインサートモード
vt) カーソル位置から閉じ括弧まで選択
yt) カーソル位置から閉じ括弧までヤンク
dT( カーソル位置から括弧まで削除
cT( カーソル位置から括弧まで削除してインサートモード
vT( カーソル位置から括弧まで選択
yT( カーソル位置から括弧までヤンク

終わり

随時更新

毎日見るぞい

【Vim】vimproc plugin is not installed.

どうもてぃです。

絶賛.vimrcが読み込まれず困っています。

先日vim-jpのslackの皆さんにも質問し解決に至らず、結局プラグインクリーンインストール、およびvimの再ビルドを行った際にタイトルのエラーで躓いたので解決策をば。

環境

プラグインクリーンインストール

$ sudo rm -rf ~/.cache/dein/*

$ cd ~/.cache/dein

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh

$ sh ./installer.sh ~/.cache/dein

dein.vimも再インストールします。

上記手順を踏んだ後vimを起動したらプラグインが入る。

Unite.vimgrep

自分の場合 <leader>g にunite grepを割り当ててます。

更にunite grepの際、The Silver Searcher(ag)が動くようにも設定してます、爆速です。

unite grepを動かすと、 vimproc plugin is not installed が出て、grep結果が出てこない。

本家を確認

github.com

~/.vim/bundle/vimproc.vim配下にcloneしてmakeしろとのこと。

ただ、自分は ~/.cache/ にdein.vimプラグインを管理しているので、 ~/.cache/dein/repos/github.com/Shougo/vimproc.vim でmakeしてあげます。

make

~
% cd ~/.cache/dein/repos/github.com/Shougo/vimproc.vim


~/.cache/dein/repos/github.com/Shougo/vimproc.vim master* # <- 自分のpromptです 
% make
make -f make_unix.mak
make[1]: ディレクトリ '/home/motty/.cache/dein/repos/github.com/Shougo/vimproc.vim' に入ります
cc -W -O2 -Wall -Wno-unused -Wno-unused-parameter -std=gnu99 -pedantic -shared -fPIC  -o lib/vimproc_linux64.so src/proc.c -lutil
make[1]: ディレクトリ '/home/motty/.cache/dein/repos/github.com/Shougo/vimproc.vim' から出ます

おわり

無事タイトルのエラーを解決できました。

調べても全然出てこなかったので結構困りました。

ただ、まだ.vimrcの読み込みがうまく行かない。。。

解決するまで :source ~/.vimrc で一旦対応。

【Docker】Rails圧倒的環境構築

どうもてぃ。

新年初の記事ですが、昨年Docker Advent Calendarに参戦した記事の簡易版を書きたいと思います。

理由としては、Advent Calendarの内容はボリューミーすぎて、伝えたいことがまばらになってしまったためです。

今回はさくっといきます。

やりたいこと

スクリプト流したら環境構築完了

詳しい内容は以下のQiita記事へGo

qiita.com

Repository

github.com

やることは README.md に全て書いてある。

Let's try

$ git clone https://github.com/motty93/docker-rails-postgresql.git

$ cd docker-rails-postgresql/

$ sudo chmod 755 init.sh

$ ./init.sh

これでRailsサーバーが立ち上がります。

自動で0.0.0.0:3000 のブラウザが開くはず。

おわり

めっちゃ簡単。

init.sh の中身をみればだいたい何をやっているかわかるかとおもいます(ほとんどコマンドを羅列してるだけ)。

興味あれば是非リポジトリクローンして使ってください。

今後、rails6系のバージョンにも対応する予定ですので、是非Star押していただけると励みになります!

では今年もよろしくお願い致します。

【Vim】バージョン8へアプデするとエラーが出る

どうもてぃです。

最近フロント力を強化するためにReactを毎日少しずつ継続してやってます。

vimでやる場合にインデントが揃わなかったり、中括弧で警告っぽい表示になったりと、結構不便に感じることが多かったので、今回vim-prettierを導入することにしました。

その前準備として、vim8にバージョン上げたところ、突然エラーに陥ってしまったので解決策を備忘録として書いておきます。

環境

  • elementary OS 0.4.1 Loki (ubuntu 16.04.4)
  • vim 7.4.1

vim8へアプデ

ubuntuでアプデする方法は結構簡単でした。

$ sudo add-apt-repository ppa:jonathonf/vim

$ sudo apt update

$ sudo apt install vim

上記で問題なくいけるはず。

どんなファイルを開いてもエラー

vim8 function <SNR>63_append[6] ~~~~~~~neomru~~~~ やら E892 文字列を浮動少数点数として扱っています と毎回出てくる。

流石に鬱陶しい。

いろいろ調べて見てたら、issueが上がってましたね。

github.com

neomru.vimのバージョンチェックを修正しないといけないっぽい。

issue通りに修正

対象のプラグインを修正します。

僕は .vim をホームディレクトリに作っているので以下の手順で修正します。

$ cd .vim/dein/repos/github.com/Shougo/neomru.vim/autoload/

$ vim neomru.vim

vimで開いてノーマルモード/str2float と入力すると対象の修正箇所まで飛べると思います。

あとはissueの通りに修正を入れたらエラーが出ないようになります。

終わり

Docker Advent Calendar 2019 - Qiita

Docker Advent Calendar 18日目に参戦予定です。

どうぞよろしく。

【Rails】heroku containerをリリース時にアプリがクラッシュする

f:id:rdwbocungelt5:20181009115813j:plain

どうもてぃです。

一ヶ月ほど前に僕もパパになり、可愛い娘の寝顔を見ながら出勤する毎日を過ごしております。

天使すぎてホント癒やされる。

それはさておき、今回はherokuへコンテナデプロイした際に少しハマったので、同じ現象に悩まれてる方へ向けて記事を書きたいと思います。

heroku container

今回始めてheroku containerを使用してみたんですが、めちゃくちゃ簡単でした。

プロジェクトをDockerで作成しているなら是非やってみてください。

ただ、気をつけていないとハマる部分は割とあります。

以下デプロイ手順参考。

devcenter.heroku.com

個人的にherokuとgoogleはリファレンスが最強だと思ってます。

そんなに難しい英語も書いてないですしね。

はまった現象

heroku containerのデプロイ時に気をつけないといけないのが、デプロイしたいコンテナ以外のコンテナが動いている場合は壊すか止めるかしないとアプリケーションクラッシュの原因になることです。

僕は開発が終わったら毎回コンテナを潰してるので、 docker ps -a で出てきたものは全て削除してます。

総削除は以下のコマンド。

$ docker rm `docker ps -a -q`

最近はdockerのCUIも増えてきてるのでそれを使うのも有りかもですね。

ちょーっと重いですがvimライクに操作できるので以下を使ってます。

github.com

コンテナ削除後、デプロイ手順を踏んで普通にデプロイ。

$ heroku container:push web

$ heroku container:release web

大抵はこれで上手く行きますが、アプリケーションを開いたところクラッシュしてました。

以下がログ(heroku logs --tail

2019-09-04T01:35:25.823858+00:00 heroku[web.1]: Starting process with command `rails server -b 0.0.0.0`
2019-09-04T01:35:31.697033+00:00 heroku[web.1]: State changed from starting to crashed
2019-09-04T01:35:31.606898+00:00 app[web.1]: A server is already running. Check /myapp/tmp/pids/server.pid.
2019-09-04T01:35:31.608944+00:00 app[web.1]: => Booting Puma
2019-09-04T01:35:31.608946+00:00 app[web.1]: => Rails 5.2.3 application starting in production
2019-09-04T01:35:31.608948+00:00 app[web.1]: => Run `rails server -h` for more startup options
2019-09-04T01:35:31.608949+00:00 app[web.1]: Exiting
2019-09-04T01:35:31.684704+00:00 heroku[web.1]: Process exited with status 1
2019-09-04T01:35:33.527454+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/robots.txt" host=line-bot.herokuapp.com request_id=f2475bec-d670-4f3b-9395-407e57a997c5 fwd="103.5.142.233" dyno= connect= service= status=503 bytes= protocol=https
2019-09-04T01:35:34.134860+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=line-bot.herokuapp.com request_id=d61341cf-9cc6-4290-9ece-55689779e7ef fwd="103.5.142.233" dyno= connect= service= status=503 bytes= protocol=https
2019-09-04T01:37:22.870909+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=line-bot.herokuapp.com request_id=9deb4679-3509-4dbd-bd45-3722609ec387 fwd="103.5.142.233" dyno= connect= service= status=503 bytes= protocol=https
2019-09-04T01:37:25.542657+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=line-bot.herokuapp.com request_id=72fa644f-8a98-4e96-a20b-82e01de4b659 fwd="103.5.142.233" dyno= connect= service= status=503 bytes= protocol=https
2019-09-04T01:37:28.998503+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=line-bot.herokuapp.com request_id=dd9d8c5e-7f57-4adf-816a-e68782ca8b83 fwd="103.5.142.233" dyno= connect= service= status=503 bytes= protocol=https
2019-09-04T01:37:29.463016+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=line-bot.herokuapp.com request_id=b0201b8e-efad-41f6-890c-42c4726c3922 fwd="103.5.142.233" dyno= connect= service= status=503 bytes= protocol=https

マイグレーションもやったし、DBもインスタンスも有料化してるし。。。

もしかしたらなんかエラーが出てるのにそのままデプロイしちゃったかも?とおもってローカルで確認してみたけどそんなこと全く無い。。。

原因不明でした。

よくあるエラーと同じだった

今回の問題はDockerじゃなくてもローカルでも起きる問題が、Dockerコンテナをデプロイしたがゆえに発生した問題でもありました。

どういうことかというと、ローカルで普通に開発している場合(Dockerの有無にかかわらず)、Railsサーバーを落とした際に何かの不具合で tmp/pids/server.pid が残っていると Process exited with status 1 が発生して起動できないことがあります。

これがまさに今回の原因で、コンテナをデプロイする際に、ローカルプロジェクトに tmp/pids/server.pid が残っていると一緒にherokuへデプロイされちゃうと。

エラーメッセージがまさにそれを物語っていて

2019-09-04T01:35:25.823858+00:00 heroku[web.1]: Starting process with command `rails server -b 0.0.0.0`
2019-09-04T01:35:31.697033+00:00 heroku[web.1]: State changed from starting to crashed
2019-09-04T01:35:31.606898+00:00 app[web.1]: A server is already running. Check /myapp/tmp/pids/server.pid.
2019-09-04T01:35:31.608944+00:00 app[web.1]: => Booting Puma
2019-09-04T01:35:31.608946+00:00 app[web.1]: => Rails 5.2.3 application starting in production
2019-09-04T01:35:31.608948+00:00 app[web.1]: => Run `rails server -h` for more startup options
2019-09-04T01:35:31.608949+00:00 app[web.1]: Exiting
2019-09-04T01:35:31.684704+00:00 heroku[web.1]: Process exited with status 1

A server is already running. Check /myapp/tmp/pids/server.pid. で、デプロイはできているけど、processが既にあるんすわ〜ってherokuが認識してしまっていたということですね。

解決策

とても簡単で

$ rm tmp/pids/server.pid

$ heroku container:push web

$ heroku container:release web

これで解決です。

はまるところはあるんですが、一度出来てしまえばcontainerデプロイの便利さはやめられないです。

【レビュー】ロウヤの170度リクライニングオフィスチェアを購入した

f:id:rdwbocungelt5:20190916163735j:plain

どうもてぃです。

このたび、リモートワークが増える可能性があるということで、作業環境の整備をするはじめの一歩として椅子を購入しました。

願わくばハーマンミラーアーロンチェアを買いたかったんですが、如何せん高い。

でも、アーロンチェアは会社で使っていてちょっとだけ不満もあったので、その不満を満たすべく自分の要望にあった椅子を探し求めた結果、今回の椅子に決めました。

以前使っていた椅子

実家にいた時に買ったのがこれ。

item.rakuten.co.jp

www.amazon.co.jp

結果から言うと安物買いの銭失いでした。なんでこんなにレビューが良いのか謎なんですよねぇ。

このタイプ(ハイバックっていうのかしら?)の椅子、僕には全く合わなかったです。

主な理由としては、背もたれ。一息するとき、フーッと、もたれかかっても、身体にフィットしないというか背中全体を支えてくれない。

あと、もたれたときに背もたれが後頭部の高さまであるので、髪の毛にワックスをつけてると気になって安易に背中をつけられない、リラックスできないんです。

挙句の果てには半年で接続部分がもげてしまい、背もたれを外さないといけない始末。

現在は無様な姿と成り果て、粗大ごみとして出す機会を毎回失っているので、仕方なくギター用の椅子として使用しています。

f:id:rdwbocungelt5:20190916151608j:plain
無様な姿に変わり果てた汚い椅子

今回購入した椅子

こちらです。

今見たらクソたけぇ。

www.low-ya.com

楽天のスーパーセールで安くなっていたのですが、セール時に買い損ね残念に思っていたところ、公式を見たらたまたまスーパーセールよりも安くなっており衝動的にポチりました。

セール時には17000円くらいで購入できたのはラッキーでしたね。

使用し始めて3ヶ月ほど経過したので、良い点・悪い点を書いていこうと思います。

良い点

その1:組み立てが割と簡単

パーツがいちいちデカイのが難点ですが、デカイ分組み立ては結構簡単でした。

所要時間15〜20分ほど。

レビューで30分ほどかかると書いてたので、想定内に収まってよかったです。

その2:身体にフィットする

フィットします。前の子よりも断然いいです。

メッシュを購入して、高反発なのにフィットする。すばらC。

僕は身長180cmと割と大きめで、ハイバック式が嫌いという性質をもっていますが、リクライニングを調整すると背筋も伸びて頭も後ろにつかないし身体が包まれる感じがするのはマジで神です。

マジで神。

その3:腰が痛くならない

これも前述の通り、身体にフィットするので腰が痛くなりません。

僕の弱点は腰なので、これを満たせているはかなり大きいです。

つーか、椅子で腰悪くするって本末転倒だわ。

その4:リクライニング最高

仕事中に詰まったりちょっと休憩するときに、フルリクライニングできるのはマジで良い。

レビューにはありましたが、「この椅子に座ると眠くなる」はあながち間違ってないかも。

ただ、僕は仕事用に使ってるのでいまのところその兆候はないです。

フットレストもあって寝心地も割といい。でも、寝る用途として買ったわけではないので気をつけないとですね。

悪い点

その1:デカい

良い点でも上げてますが、デカいです。

僕は男性なので問題ないですが、女性だと一人で組み立てるのに苦労しそう。

あと、引っ越しの時割と面倒臭いかもしれないですねぇ。。。

その時はもっと稼いで、売り払ってアーロンチェア買おうかな。

その2:油臭い

新品あるあるなのかな?

到着してダンボールを開いた時に油臭く、組立後も一週間ほど油臭かったです。

組み立てるときにも思いましたが、接続部の部品(フットレストや足)に結構油がついてました。

仕方ないんですけどね。。。組み立て時にはちゃんと軍手をした方がいいです。

組立て終わった後にアルコール除菌シートで拭いてまわっても一週間前後は臭いが残ったので要注意です。

その3:各部品の品質が良くない

セール時の在庫処分的な商品だからかなーと思ったりしました。

品質については以下

  • 座る部品のメッシュがちょっと破けてた
  • ネジが合わず回すのに結構力が必要だった
  • 左右で接続部の位置が違ったりする
  • フットレストを出し入れするとき、何かに引っかかったりしてコツがいる

いまのところ気になるのはこれくらい。

上3つは時間も経ったのでもう気にしていないです。

ただ、フットレストは困りますね。毎回スムーズに出てこない。

しかも、出し入れの音がうるさい。

さらに、金属部分を触ると油が手に付く。

そんな頻繁にリクライニングして寝転がるわけではないので、いまのところ目をつむってます。

次買う椅子では必ず見るように気をつけたいです。。。

その4:フットレストうるさい

前述通りです。

出し入れがうるさいので、これは品質の問題。。。

次買う椅子では以下略

総評

以上、良い点・悪い点あげてみました。

前の椅子がひどすぎたのもあり、最低限要件が満たされている今回の椅子には総じて今のところ満足してます。

いや、その椅子はマジカスだよ、こっちのが絶対おすすめだよって人がいたら是非とも教えてください。

その時はあなたのアフィリンクを踏ませてください。お願いします。