質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1659閲覧

AWS Cloud9でChromeのインストール方法

NogiToshihiro

総合スコア1

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1グッド

1クリップ

投稿2020/08/13 23:15

前提・実現したいこと

AWS(Amazon) Cloud9で「Everyday Rails - RSpecによるRailsテスト入門」のサンプルアプリのセットアップについて質問させて下さい。

次のサイトを参考に,サンプルアプリのセットアップを試みました。
https://blog.jnito.com/entry/2019/10/15/085932

具体的には,
①GitHubからコードをクローン
git clone https://github.com/everydayrails/everydayrails-rspec-2017.git

②rvmで実行環境をRuby 2.4系に設定
rvm install 2.4.9

以下,上記サイトの「ざっくりとした手順」と同じ。

エラー内容

テストがパスするか確認したところ,下記のエラーコードが表示され、テストが通らず。

(略) Failures: 1) Tasks user toggles a task Got 0 failures and 2 other errors: 1.1) Failure/Error: visit root_path Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary # #0 0x558b29d37ea9 <unknown> # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/response.rb:71:in `assert_ok' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/response.rb:34:in `initialize' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/default.rb:106:in `request' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/bridge.rb:170:in `execute' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/bridge.rb:103:in `create_session' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/bridge.rb:54:in `handshake' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/chrome/driver.rb:58:in `initialize' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/common/driver.rb:46:in `new' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/common/driver.rb:46:in `for' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver.rb:86:in `for' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/capybara-2.15.4/lib/capybara/selenium/driver.rb:23:in `browser' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/capybara-2.15.4/lib/capybara/selenium/driver.rb:67:in `visit' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/capybara-2.15.4/lib/capybara/session.rb:276:in `visit' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/capybara-2.15.4/lib/capybara/dsl.rb:50:in `block (2 levels) in <module:DSL>' # ./spec/system/tasks_spec.rb:24:in `go_to_project' # ./spec/system/tasks_spec.rb:14:in `block (2 levels) in <top (required)>' 1.2) Failure/Error: Unable to infer file and line number from backtrace Selenium::WebDriver::Error::UnknownError: unknown error: cannot find Chrome binary # #0 0x5567e0412ea9 <unknown> # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/response.rb:71:in `assert_ok' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/response.rb:34:in `initialize' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:83:in `new' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:83:in `create_response' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/default.rb:106:in `request' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/http/common.rb:61:in `call' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/bridge.rb:170:in `execute' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/bridge.rb:103:in `create_session' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/remote/bridge.rb:54:in `handshake' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/chrome/driver.rb:58:in `initialize' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/common/driver.rb:46:in `new' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver/common/driver.rb:46:in `for' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/selenium-webdriver-3.6.0/lib/selenium/webdriver.rb:86:in `for' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/capybara-2.15.4/lib/capybara/selenium/driver.rb:23:in `browser' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/capybara-2.15.4/lib/capybara/selenium/driver.rb:118:in `save_screenshot' # /home/ec2-user/.rvm/gems/ruby-2.4.9/gems/capybara-2.15.4/lib/capybara/session.rb:763:in `save_screenshot' Finished in 8 seconds (files took 5.24 seconds to load) 70 examples, 1 failure Failed examples: rspec ./spec/system/tasks_spec.rb:12 # Tasks user toggles a task

試したこと

上記コードの途中に,エラーメッセージ
Selenium::WebDriver::Error::UnknownError:
unknown error: cannot find Chrome binary
があり,Chromeブラウザのインストールが必要と考え,

curl https://intoli.com/install-google-chrome.sh | bash

を実行。しかし,次のようにインストールはうまくいかず。

% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 9526 100 9526 0 0 12820 0 --:--:-- --:--:-- --:--:-- 12803 Working in /tmp/google-chrome-installation /tmp/google-chrome-installation /home/ec2-user/environment/rails_projects/everydayrails-rspec-2017 Configuring the Google Chrome repo in /etc/yum.repos.d/google-chrome.repo Loaded plugins: priorities, update-motd, upgrade-helper amzn-main | 2.1 kB 00:00:00 amzn-updates | 3.8 kB 00:00:00 google-chrome | 1.3 kB 00:00:00 1072 packages excluded due to repository priority protections Package wget-1.18-5.30.amzn1.x86_64 already installed and latest version Nothing to do --2020-08-13 09:15:10-- https://dl.google.com/linux/linux_signing_key.pub Resolving dl.google.com (dl.google.com)... 172.217.175.78, 2404:6800:4004:81f::200e Connecting to dl.google.com (dl.google.com)|172.217.175.78|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 10218 (10.0K) [application/octet-stream] Saving to: ‘linux_signing_key.pub’ linux_signing_key.pub 100%[================================================>] 9.98K --.-KB/s in 0.01s 2020-08-13 09:15:10 (898 KB/s) - ‘linux_signing_key.pub’ saved [10218/10218] Attempting a direction installation with yum. Loaded plugins: priorities, update-motd, upgrade-helper 1072 packages excluded due to repository priority protections Resolving Dependencies (中略) make[1]: Leaving directory `/tmp/google-chrome-installation/patchelf-0.9/src' Making all in tests make[1]: Entering directory `/tmp/google-chrome-installation/patchelf-0.9/tests' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/tmp/google-chrome-installation/patchelf-0.9/tests' make[1]: Entering directory `/tmp/google-chrome-installation/patchelf-0.9' make[1]: Nothing to be done for `all-am'. make[1]: Leaving directory `/tmp/google-chrome-installation/patchelf-0.9' stat: No such file or directory stat: No such file or directory sed: can't read /opt/google/chrome/google-chrome: No such file or directory Attempted experimental patching of Chrome to use a relocated glibc version. bash: line 219: google-chrome-stable: command not found Installation has failed. Please email contact@intoli.com with the details of your operating system. If you're using using AWS, please include the AMI identifier for the instance.

ここで行き詰ってる状態です。

何かわかる方がいらっしゃったらお願いします。他に情報が必要でしたらお知らせ下さい。お伝えします。宜しくお願いします。

yu_1985👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「Everyday Rails - RSpecによるRailsテスト入門」の翻訳者の伊藤です。
Everyday Railsを読んでいただき、どうもありがとうございます!

Cloud9でChromeのインストールができない、とのことですが、僕が実際に試したところChromeのインストールは成功しました。
Nogiさんの環境は少し古いCloud9環境だったりするんでしょうか?
一度ゼロから新規に環境を作り直すとうまくいくかもしれません。

僕が実際に試した手順は以下の動画で確認できるので、こちらも参考にしてみてください。

ただし、Chromeのインストールに成功しても別のエラーでテストが失敗すると思います。
Chromeインストール後に必要な手順は以下のとおりです。

selenium-webdriverとcapybaraを最新版にする

Gemfileを編集してcapybaraのバージョン制限を外します。

diff

1 group :test do 2- gem 'capybara', '~> 2.15.2' 3+ gem 'capybara' 4 gem 'webdrivers' 5 end

続いて以下のコマンドを実行し、selenium-webdriverとcapybaraをアップデートします。

$ bundle update selenium-webdriver capybara

webdrivers gemを使う

selenium-webdriver gemはサポートが止まっています。代わりにwebdrivers gemを使います。

diff

1 group :test do 2 gem 'capybara' 3 gem 'selenium-webdriver' 4- gem 'chromedriver-helper' 5+ gem 'webdrivers'
$ bundle install

spec/support/vcr.rb に設定を追加

webdrivers gemをインストールした関係で、vcrの設定を追加する必要があります。

diff

1 # spec/support/vcr.rb 2 VCR.configure do |config| 3 config.cassette_library_dir = "#{::Rails.root}/spec/cassettes" 4 config.hook_into :webmock 5 config.ignore_localhost = true 6+ config.ignore_hosts 'chromedriver.storage.googleapis.com' 7 config.configure_rspec_metadata! 8 end

これでテストがすべてパスすることを確認しました。
上記の動画でもこの手順を説明しています。

Cloud9で動かす手順については以下のQiita記事でも説明しているので、こちらもあわせて参考にしてみてください。

投稿2020/08/14 06:52

jnchito

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NogiToshihiro

2020/08/14 08:13

伊藤さま 丁寧な回答と動画ありがとうございます。 Cloud9の環境を新規に作りなおしたところ,Chromeをインストールすることができました。 ご指摘通り,環境が古かったかもしれません。 インストール後は,回答の通りに進めると無事にテストが通りました! これで心置きなく「Everyday Rails」を読み進めることができます。 本当にありがとうございました!
jnchito

2020/08/14 08:18

解決して良かったです!またうまく動かない箇所が出てきたらTeratailに質問&Twitterでメンションください????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問