VirtualBOX+Vagrant+Ansibleで開発環境を作る その1

こちらの記事を参考にAnsibleを動かしてみたいと思います。

Ansibleをはじめる人に。 - Qiita

↑の記事は仮想サーバを2本立てて一方をcontroller、もう一方をtargetとしていますが、今回はtargetだけ仮想でたてて、Macをコントローラとして動かしたいと思います。

事前準備

VagrantVirtualBoxはサイトからdmgをDL/ansibleはbrew installしました。 ansibleの導入にはpython 2.6+なのですが、私のmacにはPython 2.7.10が入ってたのでそのまま進めます。

仮想サーバtargetを作成します。

% mkdir vagrant
% cd vagrant
% vagrant init

vagrantfileが生成されるので、targetサーバの情報を書き込みます。OSはCentOS7にしました。

Vagrant.configure(2) do |config|
  config.vm.define "target" do |node|
        node.vm.box = "centos/7"
        node.vm.hostname = "target"
        node.vm.network :private_network, ip: "192.168.100.20"
        node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2220
  end
end

起動します。

% vagrant up

これだけ。めっちゃ早い。 sshで疎通を確認しますが、まあ通りません。認証エラーです。 Vagrant 1.7以降、vagrant up 時に旧来の insecure_key を検知した場合、その仮想マシン用の別の鍵ペアを生成して insecure_key を置き換える仕様になったそうです。

Windowsでvagrant upした後にsshログインする方法 · DQNEO起業日記

こちらの記事の通り、sshログイン情報は"vagrant ssh-config"コマンドを叩くと教えてくれるので、設定された情報を元にsshが通ることを確認します。

ansible疎通

対象ホストをまとめて記述したinventoryファイルを作り、ハンズオンのPlaybookを試してみます。 SSHssh configを参照するように設定したので、inventory/hosts にはssh configで設定したホスト名で記述します。 試してみる、のtest.ymlの中身もuserを書き換えます。

ssh config

Host          vag.tst
Hostname      192.168.100.20
User          vagrant
IdentityFile  ~/workspace/vagrant/.vagrant/machines/target/virtualbox/private_key

■inventory/hosts

[targets]
vag.tst

■test.yml

- hosts: targets
  user: vagrant ←
  tasks:
    - name: output message.
      debug: msg="{{ message }}"

    - name: output fruits
      debug: msg="We want {{ item.value.amount }} {{ item.key }} !" 
      with_dict: "{{ fruits }}"
Ansibleをもう少し試す

ハンズオン通り下記のPlaybook(main.yml)を実行してみます。( jqだけEPELリポジトリを追加してそちらから取得しないといけないのでいったん削除)

- hosts: targets
  user: vagrant
  tasks:
  - name: install packages from yum
    yum: name={{ item }} state=latest
    with_items:
      - ruby
      - httpd

  - name: register cron job
    cron: name="check ping" day="*/2" hour="12" minute="0" job="ping -c 3 192.168.100.10"

  - name: create directories
    file: path={{ item.path }} owner={{ item.owner }} group={{ item.group }} mode=0{{ item.mode }} state=directory
    with_items:
      - { "path":"/opt/ansible", "owner":"root", "group":"root", "mode":"755" }
      - { "path":"/opt/vagrant", "owner":"vagrant", "group":"vagrant", "mode":"755" }

  - name: copy files
    copy: src=./files/hoge dest=/opt/ansible/hoge owner=root group=root mode=0755

  - name: copy template files
    template: src=./templates/fuga.j2 dest=/opt/ansible/fuga owner=root group=root mode=0755

↓結果↓

% ansible-playbook -i inventory/hosts main.yml

PLAY [targets] *********************************************************************************

TASK [Gathering Facts] *************************************************************************
ok: [vag.tst]

TASK [install packages from yum] ***************************************************************
failed: [vag.tst] (item=[u'ruby', u'httpd']) => {"changed": true, "item": ["ruby", "httpd"], "msg": "You need to be root to perform this command.\n", "rc": 1, "results": ["Loaded plugins: fastestmirror\n"]}
    to retry, use: --limit @/Users/username/workspace/ansible/main.retry

PLAY RECAP *************************************************************************************
vag.tst                    : ok=1    changed=0    unreachable=0    failed=1

yumを実行するためにルートユーザにならないとダメそうです。Playbook(main.yml)を修正

- hosts: targets
  user: vagrant
  become: yes  ←タスクすべてをsudoで実行する
  tasks:

(後略)

↓結果↓

% ansible-playbook -i inventory/hosts main.yml

PLAY [targets] *********************************************************************************

TASK [Gathering Facts] *************************************************************************
ok: [vag.tst]

TASK [install packages from yum] ***************************************************************
changed: [vag.tst] => (item=[u'ruby', u'httpd'])

TASK [register cron job] ***********************************************************************
changed: [vag.tst]

TASK [create directories] **********************************************************************
changed: [vag.tst] => (item={u'owner': u'root', u'path': u'/opt/ansible', u'group': u'root', u'mode': u'755'})
changed: [vag.tst] => (item={u'owner': u'vagrant', u'path': u'/opt/vagrant', u'group': u'vagrant', u'mode': u'755'})

TASK [copy files] ******************************************************************************
changed: [vag.tst]

TASK [copy template files] *********************************************************************
changed: [vag.tst]

PLAY RECAP *************************************************************************************
vag.tst                    : ok=6    changed=5    unreachable=0    failed=0

成功しました!タスクごとにbecomeを設定することもできるらしいので開発環境作るときはもうちょっとちゃんとやる。

[vagrant@target ~]$ ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
[vagrant@target ~]$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Oct 19 2017 20:39:16
[vagrant@target ~]$ sudo yum history info 2
Loaded plugins: fastestmirror
Transaction ID : 2
Begin time     : Fri Apr  6 07:12:11 2018
Begin rpmdb    : 303:0b438f896414e3740ba8650a5ae32eb0794477ba
End time       :            07:12:14 2018 (3 seconds)
End rpmdb      : 318:c8dd1f6f94f41a558ed062c2fc3ce0f4d0411ec9
User           : vagrant <vagrant>
Return-Code    : Success
Command Line   : -d 2 -y install ruby httpd
Transaction performed with:
    Installed     rpm-4.11.3-25.el7.x86_64                      @anaconda
    Installed     yum-3.4.3-154.el7.centos.1.noarch             @koji-override-1
    Installed     yum-plugin-fastestmirror-1.1.31-42.el7.noarch @anaconda
Packages Altered:
    Dep-Install apr-1.4.8-3.el7_4.1.x86_64               @updates
    Dep-Install apr-util-1.5.2-6.el7.x86_64              @base
    Install     httpd-2.4.6-67.el7.centos.6.x86_64       @updates
    Dep-Install httpd-tools-2.4.6-67.el7.centos.6.x86_64 @updates
    Dep-Install libyaml-0.1.4-11.el7_0.x86_64            @base
    Dep-Install mailcap-2.1.41-2.el7.noarch              @base
    Install     ruby-2.0.0.648-33.el7_4.x86_64           @updates
    Dep-Install ruby-irb-2.0.0.648-33.el7_4.noarch       @updates
    Dep-Install ruby-libs-2.0.0.648-33.el7_4.x86_64      @updates
    Dep-Install rubygem-bigdecimal-1.2.0-33.el7_4.x86_64 @updates
    Dep-Install rubygem-io-console-0.4.2-33.el7_4.x86_64 @updates
    Dep-Install rubygem-json-1.7.7-33.el7_4.x86_64       @updates
    Dep-Install rubygem-psych-2.0.0-33.el7_4.x86_64      @updates
    Dep-Install rubygem-rdoc-4.0.0-33.el7_4.noarch       @updates
    Dep-Install rubygems-2.0.14.1-33.el7_4.noarch        @updates
history info

yumインストール/クーロンジョブ作成/ディレクトリ作成/ファイルのコピー/テンプレートの展開すべて完了していました!

aws-mobile-react-native-starter day01

引き続きReactNativeの実装のサンプルにトライしてみようと思います。 今回はこちらに従って作業。

qiita.com

MobileHubセットアップ

プロジェクトを作成しようとすると権限でエラーが発生します。

Failed to create Mobile Hub Service Role. Sorry, but you do not have permission for this operation. For help, see http://docs.aws.amazon.com/mobile-hub/latest/developerguide/managed-policies.html. Details = User: arn:aws:iam::650593974448:user/kabe is not authorized to perform: mobilehub:CreateServiceRole on resource: arn:aws:iam::650593974448:role/MobileHub_Service_Role

たしかに、ログインしているユーザにアタッチしたAWSMobileHub_FullAccessにはmobilehub:CreateServiceRoleがセットされてない。どこにあるんだよこれ。
調べてみたのだけどグループにアタッチできるポリシーの中ではこの権限が付与されているものはなさそう。
仕方がないからカスタムでAllowしようとしたら、ARNが必要で書き込みできない。MobileHubのARNの形式はarn:aws:mobilehub:region:account-id:project/projectIDだから、…だからそのProjectを作るために権限が足りないんだって言ってんじゃん(´;ω;`)

f:id:kabe1087:20171213153117p:plain

調べてみてもなぜAWSMobileHub_FullAccessCreateServiceRoleの権限が与えられていないのかは謎でした。何か理由があるのかな??教えて欲しいな。

止まっていても仕方がないのでプロジェクトのインポートだけ、ルートユーザでログインして実行します。
reactnative-starterというプロジェクトはもうあるから作れないよー!というエラーが出る(AWSこのパターン多いな…作業途中でエラーになって終わらなかったのが管理画面から見えないところで残ってるのどうにかなんないの???)のでreactnative-starter01とかで数分でできあがり。
無事aws-exports.jsを入手できたので、ローカルにnode.jsの開発環境を構築していこうと思います。

node.jsセットアップ

qiita.com

こちらに従って環境を構築しました。特に大きな問題なく。
途中nodebrew install-binary latestするときだけ、フォルダがないよと怒られるので、自分でフォルダ掘っておけば通る。
あとシャチョさんのオススメでbashではなくzshを使っているので、実行パスは.bashrcではなく.zshrcに書くこと(ハマった)

さて、手順に戻ってアプリの実行を試していきます。
npm install で必要なパッケージのダウンロード > npm startまでは問題なくできました。が、react-nativeインストールしてねぇな???

react-nativeセットアップ

qiita.com

ホントQiitaがなかったら心折れてる。
指示通りwatchman,flow,React Nativeをインストールします。

$ brew install watchman
$ brew install flow
$ npm install -g react-native-cli

特になんの問題もなく(‘ω‘ )

$ watchman -v
4.9.0
$ flow version
Flow, a static type checker for JavaScript, version 0.61.0
$ react-native -v
react-native-cli: 2.0.1

aws-mobile-react-native-starter アプリの実行

指示通りnpm startでサーバを起動して、別のターミナルからiOSシミュレータを起動してみます。

$ react-native run-ios
Scanning 740 folders for symlinks in /Users/k-abe/Desktop/aws-mobile-react-native-starter-master/client/node_modules (8ms)
Found Xcode project awsmobilereactnativesample.xcodeproj
xcrun: error: unable to find utility "instruments", not a developer tool or in PATH

Command failed: xcrun instruments -s
xcrun: error: unable to find utility "instruments", not a developer tool or in PATH

うむむ、XcodeのCommand line toolsをみつけられないっぽい?? Xcode > Preference > Locations でコマンドラインツールが指定されてなかったので設定します。
f:id:kabe1087:20171214152241p:plain

起動したー!!!
f:id:kabe1087:20171214153206p:plain

Ruby Sample for AWS Cloud9 day2

先日のgemの置き場の件、

sudoしないでgem installし直したら治った。なんなのよ(´;ω;`)

これ、rvmさんのサイト見たら
RVM: Ruby Version Manager - Sudo Integration with RVM

By default, when you use sudo your current shell environment is not passed through to the session created by it, but RVM already allows for easier access to sudo calls with rvmsudo.

となっていて、
RVM+sudoで`sudo: gem: command not found`とか言われたら`rvmsudo`を使えばいいらしいよ。 | Ginpen.com

sudoはシェルを改めて開始するためrvm useされてない状態になるから駄目、という事らしい。その点rvmsudoはRVM+Rubyを使うための環境変数をちゃんと設定してくれるそうだ。

ということらしい。AWSSampleのチュートリアル手順、rvmsudoに直したほうが良いのでは??って思った。

閑話休題

Step 6: Run the AWS SDK Code

再開します。
http://docs.aws.amazon.com/cloud9/latest/user-guide/credentials.html

ん?ちゃんと読んでなかったけど、

If you are using an EC2 environment, you can skip the rest of this topic, as AWS managed temporary credentials are already set up for you in the environment.

って書いてません??書いてません…???

Access Permissions Reference for AWS Cloud9 - AWS Cloud9

指示に従ってPreferences開くと警告が出ました。

f:id:kabe1087:20171212144043p:plain

Force UpdateしてPreferences>AWS Settings>Credentialsを確認。

f:id:kabe1087:20171212144141p:plain

ONになっていたので、もう一度手順通りRun the AWS SDK Codeしてみます。

f:id:kabe1087:20171212144228p:plain

通った!!
が、bucketあるって言われてコケますね。ないんだけどなぁ。 f:id:kabe1087:20171212144742p:plain

Step 7: Clean Up

これはenvironmentを削除するだけ。簡単。
なぜかいろいろ試行錯誤してしまったので、もう一度通してやり直して見ようと思いますが、いったん一通り動いたぞ(๑•̀ㅂ•́)و✧。

Ruby Sample for AWS Cloud9

「そもそもAWS Cloud9、Ruby on Railsサポートしてないんじゃない?テンプレ消えてない??」
って言われたので方向転換してとりあえずAWS Cloud9上でRubyを動かしてみようと思います。

トライするのはこれ。 docs.aws.amazon.com

Step 1: Install Required Tools

kabe:~/environment $ ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]

Rubyは入ってるので(知ってる)、yumの最新化だけしとく。

Step 2: Add Code

f:id:kabe1087:20171208154611p:plain

Step 3: Run the Code

f:id:kabe1087:20171208154743p:plain 普通にうごくね。

Step 4: Install and Configure the AWS SDK for Ruby

AWS SDK for RubyをつかってAWSの他のサービスを操作してみる。
まずはAWS SDK for Rubyのインストール

kabe:~/environment $ gem --version
2.6.14
kabe:~/environment $ sudo gem install aws-sdk
Fetching: jmespath-1.3.1.gem (100%)
〜中略〜
135 gems installed

スムーズにすすむ(´;ω;`)
ここで他のAWSサービスを操作するための権限設定をしなくてはならないのでIAMコンソールに移動。

After you install the AWS SDK for Ruby, you must set up credentials management in your environment. The AWS SDK for Ruby needs these credentials to interact with AWS services.

docs.aws.amazon.com

Create and Use an Instance Profile to Manage Temporary Credentials
To create an instance profile

Cloud9はEC2でいいのかな??? f:id:kabe1087:20171208162001p:plain

To attach an instance profile to an instance

Cloud9のEC2インスタンスにさっき作ったRoleをアタッチする f:id:kabe1087:20171208162433p:plain Cloud9に戻ってaws configureを実行

kabe:~/environment $ aws configure
AWS Access Key ID [****************R27Q]: 
AWS Secret Access Key [****************WYVB]: 
Default region name [ap-southeast-1]: ap-southeast-1
Default output format [None]: 

Step 5: Add AWS SDK Code

Roleの設定ができたのでRuby Sampleに戻ります。
YOUR_REGIONを環境に合わせて書き換えるの忘れないで。 f:id:kabe1087:20171208163337p:plain

Step 6: Run the AWS SDK Code

f:id:kabe1087:20171208163537p:plain Oh...エラー出ちゃった…
どうもさっきインストールしたaws-sdkにパスが通ってない??
aws-sdk自体は/usr/local/share/ruby/gems/2.0/gemsにインストールされている模様

kabe:~/environment $ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.14
  - RUBY VERSION: 2.4.1 (2017-03-22 patchlevel 111) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.4.1
  - USER INSTALLATION DIRECTORY: /home/ec2-user/.gem/ruby/2.4.0
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.4.1/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.4.1/bin
  - SPEC CACHE DIRECTORY: /home/ec2-user/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /usr/local/rvm/rubies/ruby-2.4.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.4.1
     - /usr/local/rvm/gems/ruby-2.4.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/ec2-user/.nvm/versions/node/v6.11.4/bin
     - /usr/local/rvm/gems/ruby-2.4.1/bin
     - /usr/local/rvm/gems/ruby-2.4.1@global/bin
     - /usr/local/rvm/rubies/ruby-2.4.1/bin
     - /usr/local/bin
     - /bin
     - /usr/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /usr/local/sbin
     - /usr/sbin
     - /sbin
     - /opt/aws/bin
     - /usr/local/rvm/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
kabe:~ $ which gem
/usr/local/rvm/rubies/ruby-2.4.1/bin/gem

そうだよねぇ…そこにないもんねぇ。なんで違うとこにインストールされちゃったのかな。
いったんPATH通してみる。

kabe:~/ $ export RUBYLIB=/usr/local/share/ruby/gems/2.0/gems
kabe:~ $ source .bashrc
function

f:id:kabe1087:20171208165616p:plain うーん、ダメでした。そもそもrvmで管理してるgemの置き場所じゃないところにaws-sdkをインストールしちゃってるのがダメなのかな??
てかINSTALLATION DIRECTORYにインストールされるはずなんだけど、なんで違うとこに入っちゃうの??

kabe:~ $ gem install aws-sdk
〜略〜
kabe:~ $ find /usr/local/ -name "aws-sdk-s3-1.8.0*"
/usr/local/share/ruby/gems/2.0/specifications/aws-sdk-s3-1.8.0.gemspec
/usr/local/share/ruby/gems/2.0/cache/aws-sdk-s3-1.8.0.gem
/usr/local/share/ruby/gems/2.0/gems/aws-sdk-s3-1.8.0
/usr/local/share/ruby/gems/2.0/doc/aws-sdk-s3-1.8.0
/usr/local/rvm/gems/ruby-2.4.1/specifications/aws-sdk-s3-1.8.0.gemspec
/usr/local/rvm/gems/ruby-2.4.1/cache/aws-sdk-s3-1.8.0.gem
/usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-s3-1.8.0
/usr/local/rvm/gems/ruby-2.4.1/doc/aws-sdk-s3-1.8.0

sudoしないでgem installし直したら治った。なんなのよ(´;ω;`)

/usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-core-3.11.0/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': The AWS Access Key Id you provided does not exist in our records. (Aws::S3::Errors::InvalidAccessKeyId)
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-s3-1.8.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:22:in `call'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-s3-1.8.0/lib/aws-sdk-s3/plugins/dualstack.rb:26:in `call'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-core-3.11.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:20:in `call'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-core-3.11.0/lib/aws-sdk-core/plugins/idempotency_token.rb:17:in `call'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-core-3.11.0/lib/aws-sdk-core/plugins/param_converter.rb:24:in `call'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-core-3.11.0/lib/aws-sdk-core/plugins/response_paging.rb:10:in `call'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-core-3.11.0/lib/seahorse/client/plugins/response_target.rb:23:in `call'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-core-3.11.0/lib/seahorse/client/request.rb:70:in `send_request'
        from /usr/local/rvm/gems/ruby-2.4.1/gems/aws-sdk-s3-1.8.0/lib/aws-sdk-s3/client.rb:3321:in `list_buckets'
        from /home/ec2-user/environment/s3.rb:9:in `list_my_buckets'
        from /home/ec2-user/environment/s3.rb:18:in `<main>'


Process exited with code: 1

違うエラーになったよ!
アクセスキーが無効…。ロールのアタッチのときにアクセスキーの発行までやったっけ???
つーことで、もっかい↓に戻ります。
Calling AWS Services from an Environment in AWS Cloud9 - AWS Cloud9

Create and Store Permanent Access Credentials in an Environment

RailsGirls_day.2-2_re:re:retry

環境構築4回目?
本筋とあまり関係ないんですが、AWS Cloud9、作った環境を消して作り直すのもワンクリックなので大変楽ちんです。
簡単簡単♪

課題を整理

現在の課題としては

RailsGirlsで指定しているRubyのバージョンは2.4.2。
rbenvで、~/environment配下へのインストールを指示している。
に対して、AWS Cloud9ではrvmで管理されているRubyが元々組み込まれており、バージョンは2.4.1。

→つまりrvmを使って2.4.2を使える環境を作れればいけるのかも?

rvmでRuby2.4.2を追加インストール

ここまで調べてきてsudoが全然うまく動かなくてなんじゃいなと思っていたんですけど解決した。

RVM+sudoで`sudo: gem: command not found`とか言われたら`rvmsudo`を使えばいいらしいよ。 | Ginpen.com

sudoはシェルを改めて開始するためrvm useされてない状態になるから駄目、という事らしい。その点rvmsudoはRVM+Rubyを使うための環境変数をちゃんと設定してくれるそうだ。

ということでrvmsudoつかってみます。

#バージョン確認
$ruby -v

#インストールできるRubyのバージョンを確認
$rvm list known

#2.4.2がないのでrvmのバージョンを上げる
$rvmsudo rvm get head

#rvm再起動
$rvm reload

#インストールできるRubyのバージョンを確認
$rvm list known

#2.4.2をインストールする
$rvmsudo rvm install 2.4.2

#バージョンを確認
$ruby -v

#2.4.2をデフォルトで使うように指定
$rvm --default use 2.4.2

#バージョンを確認
$ruby -v

コンソールのログを取り忘れました…。ここまでやると2.4.1と2.4.2が共存している状態になってる、らしい。
rvmsudo使わないと書き込めない領域にRubyインストールしてんのもなんか気持ち悪いんだけど。

Rails Girls インストール・レシピ つづき

4. Bundlerのインストール

普通にやるとpermission errorでるので

rvmsudo gem install bundler --no-document 
4. Railsのインストール

同じく

gem install rails --no-document

インストールレシピ完了しました。

Rails Girls アプリ・チュートリアル

railsgirls という名前の Rails アプリを作っていきます。

作っていきましょう!
ここも適宜rvmsudoしないと通らない。なんか絶対変だって(´;ω;`)

$mkdir projects
$cd projects
$rvmsudo rails new railsgirls
$cd railsgirls
$rvmsudo rails server -b 0.0.0.0

コンソール上はなんとか起動しているようにみえる。
…いけた…??

メニューから ‘preview’ - ‘port 3000’ を選んでください。

その項目ないです(´;ω;`)

ガイドやチュートリアルで、ブラウザから例えば http://localhost:3000 へアクセスする場合は、アドレス欄に入力するのではなく、画面上部から ‘Preview’ - ‘Priview Running Application’ を選ぶことで同じ操作ができます。

"起動してるアプリケーションなんざないで!!"って言われます。どうしてー(´;ω;`)

RailsGirls_day.2-1_re:retry

環境構築さんかいめ

EC2のCloud9環境からrvmを削除するところから始めます。

kabe:~/environment $ rvm seppuku

切腹

kabe:~ $ which ruby
/usr/bin/which: no ruby in (/home/ec2-user/.nvm/versions/node/v6.11.4/bin:/usr/local/rvm/gems/ruby-2.4.1/bin:/usr/local/rvm/gems/ruby-2.4.1@global/bin:/usr/local/rvm/rubies/ruby-2.4.1/bin:/usr/local/bin:/bin:/usr/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/usr/local/rvm/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin)
kabe:~ $ ruby -v
bash: ruby: command not found

Rubyがない状態になりました。

RailsGirlsの環境を作るよ

Rails Girls - Japanese

4. rbenv を使って Ruby の version を最新にする

↑に従ってRubyインストール。 今回は特に問題なく進みました(●´ω`●)

4. Bundlerのインストール
kabe:~/environment $ gem install bundler --no-document 
Fetching: bundler-1.16.0.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied @ dir_s_mkdir - /usr/local/rvm

うーん…やっぱり/usr/local/rvmでgemを実行しようとするみたい…どうしたら…??

kabe:~ $ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.13
  - RUBY VERSION: 2.4.2 (2017-09-14 patchlevel 198) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.4.1
  - USER INSTALLATION DIRECTORY: /home/ec2-user/.gem/ruby/2.4.0
  - RUBY EXECUTABLE: /home/ec2-user/.rbenv/versions/2.4.2/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.4.1/bin
  - SPEC CACHE DIRECTORY: /home/ec2-user/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/ec2-user/.rbenv/versions/2.4.2/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.4.1
     - /usr/local/rvm/gems/ruby-2.4.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/ec2-user/.rbenv/versions/2.4.2/bin
     - /home/ec2-user/.rbenv/libexec
     - /home/ec2-user/.rbenv/plugins/ruby-build/bin
     - /home/ec2-user/.rbenv/shims
     - /home/ec2-user/.rbenv/bin
     - /home/ec2-user/.nvm/versions/node/v6.11.4/bin
     - /usr/local/rvm/gems/ruby-2.4.1/bin
     - /usr/local/rvm/gems/ruby-2.4.1@global/bin
     - /usr/local/rvm/rubies/ruby-2.4.1/bin
     - /usr/local/bin
     - /bin
     - /usr/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /usr/local/sbin
     - /usr/sbin
     - /sbin
     - /opt/aws/bin
     - /usr/local/rvm/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin

この、INSTALLATION DIRECTORYってのとGEM PATHSがrvmになってるのがだめっぽい。これrvm消しただけではダメなのね(´;ω;`)

RVMのために通していたパスを削除します。人によってパスを書いてるファイルが異なると思うので、「.bashrc」「.bash_profile」「.bash_login」「.profile」「.zshrc」とか、自分がパスを追加したファイルを開いてRVM関連の記述を削除します。

もしかしてこの辺の問題なのかな??だとするとそもそもこの環境EC2から提供されてるから、やっぱりrvmとrbenvの共存を実現するところから始めないとダメなんだろうか。結局のところgemインストールパスを変更できないのでbundlerのインストールができない、という問題は初日から何も変わっていないわけで、今日も進捗ゼロ。

RailsGirls_day.1-3retry

Rails Girls インストール・レシピ:クラウドサービスを利用する Rails Girls - Japanese

ということで再挑戦です。

  1. rbenv を使って Ruby の version を最新にする
kabe:~/environment $ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
kabe:~/environment $ which ruby
/usr/local/rvm/rubies/ruby-2.4.1/bin/ruby

この状態からスタート。 まずは/home/ec2-user/の配下にrbenvとruby-buildをclone

kabe:~/environment $ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
Cloning into '/home/ec2-user/.rbenv'...
remote: Counting objects: 2697, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 2697 (delta 13), reused 21 (delta 10), pack-reused 2666
Receiving objects: 100% (2697/2697), 506.27 KiB | 631.00 KiB/s, done.
Resolving deltas: 100% (1682/1682), done.
kabe:~/environment $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Cloning into '/home/ec2-user/.rbenv/plugins/ruby-build'...
remote: Counting objects: 8347, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 8347 (delta 1), reused 1 (delta 0), pack-reused 8344
Receiving objects: 100% (8347/8347), 1.75 MiB | 2.06 MiB/s, done.
Resolving deltas: 100% (5280/5280), done.

PATHをとおして

echo 'PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

インストールして使用バージョンを指定。

kabe:~ $ rbenv install 2.4.2
Downloading ruby-2.4.2.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.bz2
Installing ruby-2.4.2...
Installed ruby-2.4.2 to /home/ec2-user/.rbenv/versions/2.4.2
kabe:~ $ rbenv global 2.4.2
kabe:~ $ which ruby
~/.rbenv/shims/ruby

普通に行けたやないか…

5.Bundlerのインストール

kabe:~ $ gem install bundler --no-document 
Ignoring executable-hooks-1.3.2 because its extensions are not built.  Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.3.2 because its extensions are not built.  Try: gem pristine gem-wrappers --version 1.3.2
Ignoring nio4r-2.1.0 because its extensions are not built.  Try: gem pristine nio4r --version 2.1.0
Ignoring nokogiri-1.8.1 because its extensions are not built.  Try: gem pristine nokogiri --version 1.8.1
Ignoring websocket-driver-0.6.5 because its extensions are not built.  Try: gem pristine websocket-driver --version 0.6.5
Error loading RubyGems plugin "/usr/local/rvm/gems/ruby-2.4.1@global/gems/executable-hooks-1.3.2/lib/rubygems_plugin.rb": cannot load such file -- executable-hooks/wrapper (LoadError)
Error loading RubyGems plugin "/usr/local/rvm/gems/ruby-2.4.1@global/gems/gem-wrappers-1.3.2/lib/rubygems_plugin.rb": cannot load such file -- gem-wrappers (LoadError)
Fetching: bundler-1.16.0.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/local/rvm/gems/ruby-2.4.1 directory.

なんで/usr/local/rvm/gems/ruby-2.4.1を見に行っちゃうんだろ。

kabe:~/environment $ gem environment
Ignoring executable-hooks-1.3.2 because its extensions are not built.  Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.3.2 because its extensions are not built.  Try: gem pristine gem-wrappers --version 1.3.2
Ignoring nio4r-2.1.0 because its extensions are not built.  Try: gem pristine nio4r --version 2.1.0
Ignoring nokogiri-1.8.1 because its extensions are not built.  Try: gem pristine nokogiri --version 1.8.1
Ignoring websocket-driver-0.6.5 because its extensions are not built.  Try: gem pristine websocket-driver --version 0.6.5
Error loading RubyGems plugin "/usr/local/rvm/gems/ruby-2.4.1@global/gems/executable-hooks-1.3.2/lib/rubygems_plugin.rb": cannot load such file -- executable-hooks/wrapper (LoadError)
Error loading RubyGems plugin "/usr/local/rvm/gems/ruby-2.4.1@global/gems/gem-wrappers-1.3.2/lib/rubygems_plugin.rb": cannot load such file -- gem-wrappers (LoadError)
RubyGems Environment:
  - RUBYGEMS VERSION: 2.6.13
  - RUBY VERSION: 2.4.2 (2017-09-14 patchlevel 198) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.4.1
  - USER INSTALLATION DIRECTORY: /home/ec2-user/.gem/ruby/2.4.0
  - RUBY EXECUTABLE: /home/ec2-user/.rbenv/versions/2.4.2/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.4.1/bin
  - SPEC CACHE DIRECTORY: /home/ec2-user/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/ec2-user/.rbenv/versions/2.4.2/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.4.1
     - /usr/local/rvm/gems/ruby-2.4.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/ec2-user/.rbenv/versions/2.4.2/bin
     - /home/ec2-user/.rbenv/libexec
     - /home/ec2-user/.rbenv/plugins/ruby-build/bin
     - /home/ec2-user/.rbenv/shims
     - /home/ec2-user/.rbenv/bin
     - /home/ec2-user/.nvm/versions/node/v6.11.4/bin
     - /usr/local/rvm/gems/ruby-2.4.1/bin
     - /usr/local/rvm/gems/ruby-2.4.1@global/bin
     - /usr/local/rvm/rubies/ruby-2.4.1/bin
     - /usr/local/bin
     - /bin
     - /usr/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /usr/local/sbin
     - /usr/sbin
     - /sbin
     - /opt/aws/bin
     - /usr/local/rvm/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin
     - /home/ec2-user/.local/bin
     - /home/ec2-user/bin

うーん…どうもrvm管理のものと混ざってしまっているように見える(´;ω;`) which gemすると~/.rbenv/shims/gemが返ってくるんだけど、GEM PATHSにこのパスが無いのがおかしい??のかな??

調べてる途中でsudoしてしまって通っちゃった

kabe:~/environment $ sudo gem install bundler --no-rdoc --no-ri
Fetching: bundler-1.16.0.gem (100%)
GemWrappers: Can not wrap missing file: bundle
GemWrappers: Can not wrap missing file: bundler
GemWrappers: Can not wrap missing file: sprockets
GemWrappers: Can not wrap missing file: thor
GemWrappers: Can not wrap missing file: rackup
GemWrappers: Can not wrap missing file: bundle
GemWrappers: Can not wrap missing file: rails
GemWrappers: Can not wrap missing file: ruby_executable_hooks
GemWrappers: Can not wrap missing file: rake
GemWrappers: Can not wrap missing file: nokogiri
GemWrappers: Can not wrap missing file: bundler
Successfully installed bundler-1.16.0
1 gem installed
kabe:~/environment $ sudo gem install rails --no-document
GemWrappers: Can not wrap missing file: sprockets
GemWrappers: Can not wrap missing file: thor
GemWrappers: Can not wrap missing file: rackup
GemWrappers: Can not wrap missing file: bundle
GemWrappers: Can not wrap missing file: rails
GemWrappers: Can not wrap missing file: ruby_executable_hooks
GemWrappers: Can not wrap missing file: rake
GemWrappers: Can not wrap missing file: nokogiri
GemWrappers: Can not wrap missing file: bundler
Successfully installed rails-5.1.4
1 gem installed

これで先にすすめるんだろうか…一旦やってみる。

kabe:~/environment $ mkdir projects
kabe:~/environment $ cd projects
kabe:~/environment/projects $ rails new railsgirls
Ignoring executable-hooks-1.3.2 because its extensions are not built.  Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.3.2 because its extensions are not built.  Try: gem pristine gem-wrappers --version 1.3.2
Ignoring nio4r-2.1.0 because its extensions are not built.  Try: gem pristine nio4r --version 2.1.0
Ignoring nokogiri-1.8.1 because its extensions are not built.  Try: gem pristine nokogiri --version 1.8.1
Ignoring websocket-driver-0.6.5 because its extensions are not built.  Try: gem pristine websocket-driver --version 0.6.5
      create  
      create  README.md
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
         run  git init from "."
Initialized empty Git repository in /home/ec2-user/environment/projects/railsgirls/.git/
      create  app
      create  app/assets/config/manifest.js
      create  app/assets/javascripts/application.js
      create  app/assets/javascripts/cable.js
      create  app/assets/stylesheets/application.css
      create  app/channels/application_cable/channel.rb
      create  app/channels/application_cable/connection.rb
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/jobs/application_job.rb
      create  app/mailers/application_mailer.rb
      create  app/models/application_record.rb
      create  app/views/layouts/application.html.erb
      create  app/views/layouts/mailer.html.erb
      create  app/views/layouts/mailer.text.erb
      create  app/assets/images/.keep
      create  app/assets/javascripts/channels
      create  app/assets/javascripts/channels/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  bin/setup
      create  bin/update
      create  bin/yarn
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/secrets.yml
      create  config/cable.yml
      create  config/puma.rb
      create  config/spring.rb
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/application_controller_renderer.rb
      create  config/initializers/assets.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/cookies_serializer.rb
      create  config/initializers/cors.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_framework_defaults_5_1.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/apple-touch-icon-precomposed.png
      create  public/apple-touch-icon.png
      create  public/favicon.ico
      create  public/robots.txt
      create  test/fixtures
      create  test/fixtures/.keep
      create  test/fixtures/files
      create  test/fixtures/files/.keep
      create  test/controllers
      create  test/controllers/.keep
      create  test/mailers
      create  test/mailers/.keep
      create  test/models
      create  test/models/.keep
      create  test/helpers
      create  test/helpers/.keep
      create  test/integration
      create  test/integration/.keep
      create  test/test_helper.rb
      create  test/system
      create  test/system/.keep
      create  test/application_system_test_case.rb
      create  tmp
      create  tmp/.keep
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor
      create  vendor/.keep
      create  package.json
      remove  config/initializers/cors.rb
      remove  config/initializers/new_framework_defaults_5_1.rb
         run  bundle install
Ignoring executable-hooks-1.3.2 because its extensions are not built.  Try: gem pristine executable-hooks --version 1.3.2
Ignoring gem-wrappers-1.3.2 because its extensions are not built.  Try: gem pristine gem-wrappers --version 1.3.2
Ignoring nio4r-2.1.0 because its extensions are not built.  Try: gem pristine nio4r --version 2.1.0
Ignoring nokogiri-1.8.1 because its extensions are not built.  Try: gem pristine nokogiri --version 1.8.1
Ignoring websocket-driver-0.6.5 because its extensions are not built.  Try: gem pristine websocket-driver --version 0.6.5
--- ERROR REPORT TEMPLATE -------------------------------------------------------
# Error Report

## Questions

Please fill out answers to these questions, it'll help us figure out
why things are going wrong.

- **What did you do?**

  I ran the command `/usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/exe/bundle install`

- **What did you expect to happen?**

  I expected Bundler to...

- **What happened instead?**

  Instead, what happened was...

- **Have you tried any solutions posted on similar issues in our issue tracker, stack overflow, or google?**

  I tried...

- **Have you read our issues document, https://github.com/bundler/bundler/blob/master/doc/contributing/ISSUES.md?**

  ...

## Backtrace

`
Errno::ENOTDIR: Not a directory @ rb_sysopen - /home/ec2-user/.rbenv/shims/gem/bundler.lock
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/process_lock.rb:9:in `initialize'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/process_lock.rb:9:in `open'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/process_lock.rb:9:in `lock'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/installer.rb:72:in `run'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/installer.rb:25:in `install'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/cli/install.rb:65:in `run'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/cli.rb:224:in `block in install'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/settings.rb:136:in `temporary'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/cli.rb:223:in `install'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/cli.rb:27:in `dispatch'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/cli.rb:18:in `start'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/exe/bundle:30:in `block in <main>'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/lib/bundler/friendly_errors.rb:122:in `with_friendly_errors'
  /usr/local/rvm/gems/ruby-2.4.1@global/gems/bundler-1.16.0/exe/bundle:22:in `<main>'
`

## Environment

`
Bundler       1.16.0
  Platforms   ruby, x86_64-linux
Ruby          2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
  Full Path   /home/ec2-user/.rbenv/versions/2.4.2/bin/ruby
  Config Dir  /home/ec2-user/.rbenv/versions/2.4.2/etc
RubyGems      2.6.13
  Gem Home    /home/ec2-user/.rbenv/shims/gem
  Gem Path    
  User Path   /home/ec2-user/.gem/ruby/2.4.0
  Bin Dir     /home/ec2-user/.rbenv/shims/gem/bin
OpenSSL       
  Compiled    OpenSSL 1.0.2k  26 Jan 2017
  Loaded      OpenSSL 1.0.2k-fips  26 Jan 2017
  Cert File   /etc/pki/tls/cert.pem
  Cert Dir    /etc/pki/tls/certs
Tools         
  Git         2.13.6
  RVM         1.29.3 (latest)
  rbenv       rbenv 1.1.1-25-g6aa70b6

  chruby      not installed
`

## Bundler Build Metadata

`
Built At          2017-10-31
Git SHA           10f20fa33
Released Version  true
`

## Bundler settings

`
path
  Set for the current user (/home/ec2-user/.bundle/config): "/home/ec2-user/.rbenv/shims/gem"
disable_shared_gems
  Set for the current user (/home/ec2-user/.bundle/config): true
`

## Gemfile

### Gemfile

`ruby
source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.4'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '~> 2.13'
  gem 'selenium-webdriver'
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
`

### Gemfile.lock

`
<No /home/ec2-user/environment/projects/railsgirls/Gemfile.lock found>
`

--- TEMPLATE END ----------------------------------------------------------------

Unfortunately, an unexpected error occurred, and Bundler cannot continue.

First, try this link to see if there are any existing issue reports for this error:
https://github.com/bundler/bundler/search?q=Not+a+directory+%40+rb_sysopen+-+%2Fhome%2Fec2-user%2F.rbenv%2Fshims%2Fgem%2Fbundler.lock&type=Issues

If there aren't any reports for this error yet, please create copy and paste the report template above into a new issue. Don't forget to anonymize any private data! The new issue form is located at:
https://github.com/bundler/bundler/issues/new
         run  bundle exec spring binstub --all
bundler: command not found: spring
Install missing gem executables with `bundle install`

やっぱりねー! やっぱ一度rvmを削除してrbenvでRubyインストールするところから始めたほうがよさそうな気がしてきました。 もう一度最初から。