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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

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

Ruby

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

Q&A

解決済

3回答

4084閲覧

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

Dai084

総合スコア8

Ruby on Rails 5

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

Ruby

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

0グッド

1クリップ

投稿2018/05/18 10:06

編集2018/05/22 05:26

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

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

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

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

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

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

guest

回答3

0

ベストアンサー

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/22 04:23

asm

総合スコア15147

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

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

Dai084

2018/05/23 03:06

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

0

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

'make' は、内部コマンドまたは外部コマンド、

操作可能なプログラムまたはバッチ ファイルとして認識されていません。

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

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

  1. gem uninstall bcrypt を実行
  2. gem uninstall bcrypt-ruby を実行
  3. gem install bcrypt --platform=rubyを実行
  4. Gemfileにgem 'bcrypt', '~> 3.1.11'を記載
  5. bundle installを実行

投稿2018/05/22 02:31

kazto

総合スコア7196

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

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

Dai084

2018/05/22 04:06

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

2018/05/22 04:14

> Ruby基盤のBcryptをインストールしようとしたということですね。 そのとおりです。でもダメでしたか。 > でも僕の環境にライブラリをビルドするためのツールがないからRuby版でも失敗したということでしょうか? これは、違います。ruby版であれば、ビルドツール群は不要なはずです。 解決策としては2通りのアプローチがあると思います。 1. ruby版のインストールに失敗した理由をちゃんと深堀りする 2. ビルドツールをインストールし、ネイティブ版のインストールにチャレンジする ネイティブ版は面倒なのが目に見えているので、ruby版のインストールをちゃんとやった方が楽だと思います。 まずは、「 gem install bcrypt --platform=rubyを実行」に失敗したときのエラーログを追記いただけますでしょうか。
Dai084

2018/05/22 05:30

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

2018/05/22 05:33

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

0

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

投稿2018/05/27 11:04

Dai084

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問