MacでVagrantで仮想環境を作ってみたものの、rails newでつまづいたはなし
railsのサンプルアプリを作るためにbundle install したところ、nokogiriのインストールでこけてしまった。 調べたところ、頑張ってmacにnokogiriを入れる方法はあるらしいが、今回は勉強のためにVagrantで仮想化して逃げることにした。
仮想環境作成
MacにVirtualBoxとVagrantをインストールし、CentOS7.0を仮想環境にインストール。
次に、Vagrantfileに仮想環境と同期するディレクトリを次のように設定する。rsync__exclude
オプションでvendor以下を同期しないようにしている。
*1
# ゲスト側で同期するディレクトリの場所をよくわからないが、`/vagrant`で設定。(推奨?) config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: [".git/", "vendor"]
仮想環境立ち上げの準備ができたので、仮想環境を立ちあげて、sshで仮想環境に入ります。
# 仮想環境起動 $ vagrant up # 仮想環境に入る $ vagrant ssh
仮想環境で作業
以下、仮想環境内でのはなし。
# gitが入ってないので入れる。 $ sudo yum install -y git gcc gcc-c++ openssl-devel readline-devel # rbenvをgitコマンドで入れる。 $ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv # rbenvのパスを通す。 $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ exec $SHELL -l # bundle を入れる $ gem install bundle #ruby 2.3.1を入れる $ rbenv install 2.3.1 # railsをインストール $ bundle install
Macではインストールに失敗したnokogiriも無事にインストールできたことを確認。 次に、railsアプリを作成する。
# ゲストでrailsアプリ作成 $ bundle exec rails new
app以下のディレクトリが作成したことを確認し、$exit
でホストに戻る。が、ホストではapp以下のディレクトリがない。
どうやら、ホストからゲストへは同期されるが、ゲストからホストへは同期されないらしい。。*2
どうやって、app以下をホストへコピーすればいいのか。。 今回はここまで。
そして、vagrant ssh
で接続中に、Macを放置してスリープ状態にすると接続きれるので、tmuxでも使うか。
参考
チャットを使った開発
最近、チャットが流行っていると感じる。
SlackやChatWorkを使っているという話をちらほら聞くし、ニュースアプリでも話題になっている。また実際、私自身も仕事で使っている。
コミュニケーションを活発に
とにかく、色々喋るのが大事だと思う。
エンジニアだと、「こんな感じで実装進めます」とか「ここの処理で時間かかりそうだけど、どうしよう」とか考えたことを書いていって良いと思っています。独り言でもok。
そうすれば、誰かがよいアドバイスをしてくれるかもしれないし、進捗の確認にもなる。
「pull request出してないけどこいつ大丈夫か?」などと、開発リーダーは思っているはずなので、自分が考えていることを書いて共有するのが大事だと思うのです。
bot活用
チャットの活用はチームのコミュニケーションの活性だけではない。
例えば、サーバーで発生したエラーメッセージやデプロイ完了の通知をbotに飛ばして通知させることもできる。
あと、githubに書かれたコメントをbotに喋らせれば、コメントにすぐ返信できる。
( bot活用は私の会社ではSlackでやってます。)
雑談チャンネル
仕事あまり関係なしに、気軽に雑談なり相談できるチャンネル作ってしまってもいいと思うんですよね。
流行ってるアプリの共有だとか、ここら辺の勉強の仕方がよく分からないとか。
パフォーマンスチューニングのはなし
仕事で、既存のロジックを見直して、パフォーマンスチューニングすることになったのですが、難しいですね。
どういった手順で進めればよいのかよくわからず。。
ロジックをみて、余計なループがあるのか、クエリの発行回数を減らせるか、などを見ていくわけですが。。
DBのI/Oに計算負荷が掛かるようなので、クエリ発行を中心にみていけばよいのだろうか?
DBもあまり理解していないので、DBの本を読み直そうかな。
初記事
webエンジニアやってるthoriです。
仕事では主に、Ruby on Railsでサーバーサイドの開発をしています。
開発を通じて思ったことなどを、メモのように気軽にブログ書いて行こうと思います。
なので、記事の質は低くなるかもしれないです。