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

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

ただいまの
回答率

90.77%

  • Ruby

    7060questions

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

  • Ruby on Rails 5

    1314questions

Ruby on Rails Bcryptのインストールによって起こるエラーを解決したい

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 190

Dai084

score 2

 Bcryptを使ってメンバー登録時のパスワードを暗号化したい。

初投稿です。Daiと申します。

Ruby on Railsを使ってWebサイトを作っているのですが、パスワード登録時の暗号化のためにGemパッケージのBcryptをbundle installでインストールしたところサーバーがLoadErrorで起動しなくなりました。

Googleで解決策を探したところ↓のサイトに解決策が載っていたので試したのですが今度はgem install bcrypt --platform=rubyでまた別のエラーが出てしまいました。(-_-;)
(https://qiita.com/totto357/items/1741da83bf642dab99df)

gem uninstall bcrypt を実行
gem uninstall bcrypt-ruby を実行
gem install bcrypt --platform=rubyを実行
Gemfileにgem 'bcrypt', '~> 3.1.11'を記載
bundle installを実行

別のヴァージョンのbcryptをインストールしてみましたが結果は同じでした。

どなたか僕と同じ状況で解決した方がいれば方法を教えていただけないでしょうか。

よろしくお願いします。。

 発生している問題・エラーメッセージ

bin/rails sをコマンドプロンプトで入力した時のエラー↓
C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.7-x86-mingw32/lib/bcrypt.rb:16:in `require': cannot load such file -- bcrypt_ext (LoadError)
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.7-x86-mingw32/lib/bcrypt.rb:16:in `rescue in <top (required)>'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.7-x86-mingw32/lib/bcrypt.rb:12:in `<top (required)>'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:81:in `require'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:81:in `block (2 levels) in require'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:76:in `each'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:76:in `block in require'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:65:in `each'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:65:in `require'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/bundler-1.16.1/lib/bundler.rb:114:in `require'
        from C:/rails/gruppe/config/application.rb:7:in `<top (required)>'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:88:in `require'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:88:in `block in server'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:85:in `tap'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:85:in `server'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
        from C:/Ruby23/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/commands.rb:18:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'

bin/rails bcrypt --platform=ruby入力時のエラー↓

C:\rails\gruppe>gem install bcrypt --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing bcrypt:
        ERROR: Failed to build gem native extension.

    current directory: C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12/ext/mri
C:/Ruby23/bin/ruby.exe -r ./siteconf20180518-12416-15fz6dm.rb extconf.rb
creating Makefile

current directory: C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12/ext/mri
make "DESTDIR=" clean
'make' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

current directory: C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12/ext/mri
make "DESTDIR="
'make' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

make failed, exit code 1

Gem files will remain installed in C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12 for inspection.
Results logged to C:/Ruby23/lib/ruby/gems/2.3.0/extensions/x86-mingw32/2.3.0/bcrypt-3.1.12/gem_make.out

 追記 install bcrypt --platform=rubyコマンド時のエラー

C:\rails\gruppe>gem install bcrypt --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing bcrypt:
        ERROR: Failed to build gem native extension.

    current directory: C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12/ext/mri
C:/Ruby23/bin/ruby.exe -r ./siteconf20180522-6184-128mqrj.rb extconf.rb
creating Makefile

current directory: C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12/ext/mri
make "DESTDIR=" clean
'make' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

current directory: C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12/ext/mri
make "DESTDIR="
'make' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

make failed, exit code 1

Gem files will remain installed in C:/Ruby23/lib/ruby/gems/2.3.0/gems/bcrypt-3.1.12 for inspection.
Results logged to C:/Ruby23/lib/ruby/gems/2.3.0/extensions/x86-mingw32/2.3.0/bcrypt-3.1.12/gem_make.out

 該当のソースコード

# 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'
↑BcryptのGem

gem 'coffee-script-source', '1.8.0'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

 補足情報(FW/ツールのバージョンなど)

OS Windows10 64bit
Ruby2.3.0
Ruby on Rails5.0.6

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+2

Ruby2.3のRubyInstallerはDevKitをインストールしないとインストールできないgemがいくつかあります。
(ついでに言えばDevkitありでもインストール出来ないgemはwindowsである限り出てきます。)

Devkitはダウンロードページの下の方に
DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe として、置いてあります。


Ruby2.3は更新の滞った旧RubyInstallerの最後のリリースです。
そのため、ruby2.3.3がリリースされてる最新だが、Rubyの2.3系列のバージョンの最新は2.3.6と遅れており
いくつかのバグ修正がなされています。

RubyInstaller2となるRuby2.4もしくはRuby2.5を利用するか
いっそvagrantで仮想Linux環境を作る方が問題は少ないです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/23 12:06

    回答ありがとうございます。Rubyのヴァージョンを更新して試してみます。

    キャンセル

+1

bcryptパッケージはネイティブビルドが必要なライブラリである一方、

'make' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

上記メッセージから、 Dai084さんの環境にはライブラリをビルドするためのツールがインストールされていないことが伺えます。

解決策としては、ネイティブ版ではなく、ruby版をインストールする、というもののようです。
https://qiita.com/totto357/items/1741da83bf642dab99df

0. gem uninstall bcrypt を実行
0. gem uninstall bcrypt-ruby を実行
0. gem install bcrypt --platform=rubyを実行
0. Gemfileにgem 'bcrypt', '~> 3.1.11'を記載
0. bundle installを実行

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/22 13:06

    回答ありがとうございます。回答いただいた内容についてお聞きしたいのですが、つまり僕が行った解決策はRuby基盤のBcryptをインストールしようとしたということですね。でも僕の環境にライブラリをビルドするためのツールがないからRuby版でも失敗したということでしょうか?もし僕の理解が正しければそのツールのインストール方法を教えていただけないでしょうか?

    キャンセル

  • 2018/05/22 13:14

    > Ruby基盤のBcryptをインストールしようとしたということですね。

    そのとおりです。でもダメでしたか。

    > でも僕の環境にライブラリをビルドするためのツールがないからRuby版でも失敗したということでしょうか?

    これは、違います。ruby版であれば、ビルドツール群は不要なはずです。

    解決策としては2通りのアプローチがあると思います。
    1. ruby版のインストールに失敗した理由をちゃんと深堀りする
    2. ビルドツールをインストールし、ネイティブ版のインストールにチャレンジする

    ネイティブ版は面倒なのが目に見えているので、ruby版のインストールをちゃんとやった方が楽だと思います。
    まずは、「 gem install bcrypt --platform=rubyを実行」に失敗したときのエラーログを追記いただけますでしょうか。

    キャンセル

  • 2018/05/22 14:30

    追記でbcrypt --platform=rubyコマンド時のエラーを掲載しました。

    キャンセル

  • 2018/05/22 14:33

    asmさんの記載が参考になるかと思います。
    Ruby2.3に関する情報は私も知りませんでした。

    キャンセル

0

Rubyのバージョンアップで解決できました。(2.3→2.4)回答していただいたasmさん、kaztoさんどうもありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby

    7060questions

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

  • Ruby on Rails 5

    1314questions