2015-12-01 107 views
2

我遇到了bcrypt gem問題。我跑了這一點:Gem已安裝,但導軌服務器啓動時失敗

gem install bcrypt 

,並得到:

Fetching: bcrypt-3.1.10-x64-mingw32.gem (100%) 
Successfully installed bcrypt-3.1.10-x64-mingw32 
Parsing documentation for bcrypt-3.1.10-x64-mingw32 
Installing ri documentation for bcrypt-3.1.10-x64-mingw32 
Done installing documentation for bcrypt after 0 seconds 
1 gem installed 

我可以在列表中看到已安裝的寶石:

bcrypt (3.1.10 x64-mingw32) 

當我開始的Rails:

rails server 

我得到了一個錯誤(我正在粘貼一個頭文件以保持它的清潔):

C:/Ruby/lib/ruby/gems/2.2.0/gems/bcrypt-3.1.10-x64-mingw32/lib/bcrypt.rb:16:in `require': cannot load such file -- bcrypt_ext (LoadError) 

我使用Windows和Ruby 2.2。 DevKit已安裝。設置環境變量:

  • PATHC:\Ruby\devkit\mingw\bin;C:\Ruby\devkit\bin
  • RI_DEVKITC:\Ruby\devkit

爲了驗證它,我跑:

make --version 

,並得到:

GNU Make 3.81 
Copyright (C) 2006 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. 
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE. 

This program built for i686-pc-msys 

這對我來說似乎很好。

Nokogiri會出現類似的問題。

出了什麼問題?

回答

2

我做了一些研究,我已經有了一個答案:

gem install檢測Ruby平臺。然後,它會自動創建並最終看起來像這樣的寶石的名稱:

bcrypt-3.1.10-x64-mingw32 

這種寶石應該有這個特定平臺預編譯的版本,但是,對Ruby 2.2,沒有編譯bcrypt_ext。所以。 2.1是支持導致問題的最後一個版本。在這種情況下,有兩種解決方案:

  1. 寶石只需要使用的devkit重新編譯:

    gem install bcrypt --platform=ruby 
    

    這將編譯源代碼和創建所需的bcrypt_ext.so。

  2. 將Ruby降級到2.1。

對於Nokogiri同樣的邏輯。

我希望它可以幫助別人。