taku0808
@taku0808

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Ruby on rails のgem install sassc - v というエラーについて

投稿を見ていただき、誠にありがとうございます。

本日Railsの学習を始め、動画を見ながらrails の設定をしていました。

その中で、下記のようなエラーが発生し、進むことができません。

Gem files will remain installed in
/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/sassc-2.4.0 for
inspection.
Results logged to
/home/vagrant/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/extensions/x86_64-linux/2.6.0/sassc-2.4.0/gem_make.out

An error occurred while installing sassc (2.4.0), and Bundler cannot
continue.
Make sure that gem install sassc -v '2.4.0' --source 'https://rubygems.org/'
succeeds before bundling.

In Gemfile:
sass-rails was resolved to 6.0.0, which depends on
sassc-rails was resolved to 2.1.2, which depends on
sassc

自分で様々な記事や動画を確認しましたが、
・rails のバージョンが違うのか
・OS が古すぎるのか 
・sassc のインストール方法が見当たらない

など、八方塞がりとなったため、質問させていただきました。

初歩的な質問となり大変恐縮ですが、何卒よろしくお願いいたします。

1

3Answer

gem のインストールがうまくいかないって,つらいですよねえ。
問題は sassc 2.4.0 のインストールに失敗している,ということのようなので,さしあたり

・rails のバージョンが違うのか

は関係無さそうです。
また,sassc 2.4.0 は
https://rubygems.org/gems/sassc
によると Ruby 2.0.0 以上が対象なので,Ruby のバージョンが古いということもなさそうです。

コマンドラインで

gem install sassc

と打っても,やっぱりインストールできないですかね?

0Like

Comments

  1. @taku0808

    Questioner

    ご返信いただきまして、誠にありがとうございます。

    ターミナルを開いた直後に、ご教示頂いた通りに実行すると、
    Building native extensions. This could take a while...
    Successfully installed sassc-2.4.0
    Parsing documentation for sassc-2.4.0
    Done installing documentation for sassc after 1 seconds
    1 gem installed

    と出てくるのですが、
    いざrails を実行すると、
    An error occurred while installing sassc (2.4.0), and Bundler cannot
    continue.
    Make sure that `gem install sassc -v '2.4.0' --source 'https://rubygems.org/'`
    succeeds before bundling.

    と現れてきます。

    最初の画面でインストールされていたとしても、rails 実行時には
    反映されず、再度インストールする必要があるということでしょうか。

    お手数おかけしますが、再度ご教示頂けますと幸いです。



  2. 単独でインストールするとインストールできるのに,Rails アプリを動かそうとすると「インストールできない」と言われるわけですね。
    すると,その Rails アプリを実行しようとした環境と,`gem install sassc` をやってみた環境が違うのではないか,ということをまず疑います。

    ええと,どこから尋ねればいいかな・・・
    じゃあ,その「いざrails を実行すると」というのは,どうやって Rails アプリを動かそうとしたのですか?
    答え方としては,たとえば「macOS 上で,当該の Rails アプリのディレクトリーに cd して,そこで rails s とやった」というような感じでお願いします。
  3. @taku0808

    Questioner

    ご返信いただきまして、誠にありがとうございます。

    mac OS上で、下記の流れで動かそうとしました。
    ※学習を開始したばかりのため、ドットインストールの手順を参考に学習してます。

    ①ターミナルを開き、
    cd MyVagrant → cd MyCentOS → vagrant up → vagrant ssh の順で立ち上げる

    ②Cyberduck の中にrails_lessons のファイルを作り、cd rails_lessonsに移動後、rails new myappを実行

    すると下記のエラーが現れます。
    An error occurred while installing sassc (2.4.0), and Bundler cannot
    continue.
    Make sure that `gem install sassc -v '2.4.0' --source 'https://rubygems.org/'`
    succeeds before bundling.

    が現れ、次の学習に進むことができません‥

    自分でも調べてはいるのですが、調べれば調べるほど、
    原因がわからず、挫折しかけております。

    何卒よろしくお願いいたします。
  4. なるほど,私は Vagrant が全く分からないので,もしそこに起因するのだとするとお役に立てそうにないのですが,もう少し進めましょう。

    rails new myapp を実行したときにエラーが出たんですよね。rails new すると,デフォルト動作では Gemfile に従って bundle install も自動的に行うので,その時点でエラーが出ているぽいですね。

    で,gem install sassc は成功したわけですが,それはその myapp ディレクトリーで実行したのですか?

@scivola さんの回答のコメント欄に返信しようと思ったのですが、第三者はコメントをつけられないようなのでこちらで返信します。


で,gem install sassc は成功したわけですが,それはその myapp ディレクトリーで実行したのですか?

については、

ターミナルを開いた直後に、ご教示頂いた通りに[gem install sassc を]実行すると、
……
①ターミナルを開き、
cd MyVagrant → cd MyCentOS → vagrant up → vagrant ssh の順で立ち上げる

とのことなので、 Vagrant box の中ではなくホストマシンで gem install sassc を実行しているように見受けられます。

②Cyberduck の中にrails_lessons のファイルを作り、cd rails_lessonsに移動後、rails new myappを実行

ここは分かりづらいですが、 vagrant ssh で開いたセッションの中で rails new myapp を実行しているのかなと。

@taku0808 さん、 gem install sasscvagrant ssh の後、 rails new myapp の前に実行する必要があります。

Vagrant とはホストマシン(ここでは macOS マシン)の中に仮想的なマシンを作って別個の OS を動かすソフトウェアです。 vagrant ssh はその仮想的な OS のターミナルに接続するコマンドです。 sassc は Rails の起動に必要なので、 gem install sasscrails new を実行するのと同じ仮想マシン上で実行しなければなりません。つまり  vagrant ssh の後です。もし macOS のターミナルを開いた直後に実行してしまうと、 sassc は Mac にインストールされてしまい、仮想マシンには影響しません。

さて、仮想マシンの中で gem install sassc を実行したとしても sassc のインストールには失敗するのではないかと思います。

ドットインストールの手順に従って sassc 2.4.0 をインストールするとエラーが出る問題の質問が teratail にも上がっていました https://teratail.com/questions/267156 。未解決ですが、エラーログを見ると以下の行があります。

cc1plus: error: unrecognized command line option "-std=c++11"

これは GCC のバージョンが4.7未満と古いことを表しています。おそらく、この質問者も @taku0808 さんもドットインストールの手順に従って古い CentOS (6か7)をインストールしたのではないかと思います。古い CentOS に入っている GCC では sassc をビルドできません。

Vagrant のセットアップ時に vagrant init bento/centos-6.7 のようなコマンドを入力しませんでしたか?  もしそうなら、 vagrant init bento/centos-8.2 で CentOS 8 をインストールし、環境構築をやり直すのがいいと思います。(古い CentOS でもツールチェインをアップデートすればいいのですが、敷居が高そうです)

0Like

@uasi さん
@uasi さんのコメントにコメントしたいのに,別にしなくちゃならない。ホント使いづらいな,コレ)

いやあ「どうか Vagrant が分かる方の目に留まって助けてくださいますよう」と祈ってたので,とてもありがたく思います。

@taku0808 さん
入門したところで出ばなをくじかれて嫌な思いをされていると思いますが,@uasi さんのアドバイスに従っていけばきっと解決しますよ。頑張ってくださいね。

0Like

Your answer might help someone💌