2014-01-14 157 views
4

我在安裝Windows 8.1機器時遇到了一些問題,需要安裝mysql2 gem。我跟着這個帖子的說明:在Windows上安裝MySQL2 Gem

Ruby MYSQL2 gem installation on windows 7

安裝mysql2寶石,和我沒有得到任何錯誤消息。

我跟着此與

bundle install 

命令,確認以下的寶石被安裝(使用束上顯示),證實了我已經安裝了以下寶石:

Using devise (3.2.2) 
Using mysql2 (0.3.14) 

然後我試着做:

rails generate devise:install 

這就是我得到的:

C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql2-0.3.14/lib/mysql2.rb:8:in `require': 126: The specified module could not be found. 
- C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql2-0.3.14/lib/mysql2/mysql2.so (LoadError) 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql2-0.3.14/lib/mysql2.rb:8:in `<top (required)>' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.5.1/lib/bundler/runtime.rb:76:in `require' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.5.1/lib/bundler/runtime.rb:76:in `block (2 levels) in require' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.5.1/lib/bundler/runtime.rb:72:in `each' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.5.1/lib/bundler/runtime.rb:72:in `block in require' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.5.1/lib/bundler/runtime.rb:61:in `each' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.5.1/lib/bundler/runtime.rb:61:in `require' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/bundler-1.5.1/lib/bundler.rb:131:in `require' 
    from C:/Users/Joseph/googledrive/projects/rails/test_new_devise/config/application.rb:7:in `<top (required)>' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands.rb:43:in `require' 
    from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands.rb:43:in `<top (required)>' 
    from bin/rails:4:in `require' 
    from bin/rails:4:in `<main>' 

任何想法?

解決方法:

答案是從計算器兩個答案,加修飾的組合。該計算器引用:

Ruby MYSQL2 gem installation on windows 7 ...mysql2/mysql2.so: [BUG] Segmentation fault ruby 2.0.0p247

底線:讓mysql2在64位環境中使用Ruby 2個工作在Windows 8.1中,你需要做到以下幾點:

  1. 清理:你在這裏的原因是你可能在嘗試 來安裝這個gem,但它失敗了,所以你有一些清理到 做:寶石卸載mysql2

  2. 下載紅寶石2.0 64位的Windows:

http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct

  • 運行安裝程序。請注意它安裝的目錄,並確保它位於用戶路徑中。去

    Control Panel > System and Security > System - Advanced System Settings > Environment Variables 
    
  • 做出紅寶石安裝目錄下的bin目錄確保路徑是在本地用戶的PATH環境變量(這也是確定的,如果它在系統PATH環境變量)

  • 下載紅寶石2 64位的開發工具包:
  • http://cdn.rubyinstaller.org/archives/devkits/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe

    1. 運行安裝程序並記下安裝目錄的位置。說明指出,一旦完成安裝,您需要運行devkitvars.bat文件來設置環境變量。這不適用於Windows 8.1。您需要重複說明以設置上面#2中描述的本地路徑,爲本地用戶設置路徑環境變量以添加ruby開發工具箱bin目錄以及ruby dev工具包mingw bin目錄。例如,如果開發套件安裝到c:\ ruby​​2devkit,並安裝ruby2到C:\ Ruby200-x64的目錄,那麼你的編輯你的路徑語句看起來像這樣:

      C:\Ruby200-x64\bin;C:\ruby2-devkit\bin;c:\ruby2-devkit\mingw\bin 
      
    2. 接下來你需要安裝mysql連接器。請勿下載並運行自行安裝程序。相反,請下載zip文件並將其解壓縮。注意:您解壓它(這個職位的目的,目錄,讓我們假設你把它解壓到c:\ mysql的連接器:

    http://dev.mysql.com/downloads/file.php?id=450612

  • 包含在MySQL連接64位的libmysql.lib不與mingw64-gcc編譯器兼容,你需要生成mingw64兼容libmysql.lib文件。

  • 下載你孃家的工具d

    https://structure-svm-map.googlecode.com/files/svm-map-win.zip

  • 此文件解壓到本地目錄,讓我們假設您解壓縮它到c:\ SVM-地圖

  • 編輯PATH環境路徑,如前所述,到現在看像這樣:

    C:\Ruby200-x64\bin;C:\ruby2-devkit\bin;c:\ruby2-devkit\mingw\bin;c:\svm-map;C:\svm-map\python-mingw-lib 
    
  • 生成新的MySQL庫:

    (make sure you're running as administrator) 
    
    cd c:\mysql-connector\lib 
    
    gendef.exe libmysql.dll 
    
    dlltool -v --dllname libmysql.dll --def libmysql.def --output-lib libmysql.lib 
    
    copy libmysql.dll C:\Ruby200-x64\bin 
    
    copy libmysql.lib C:\Ruby200-x64\bin 
    
  • 安裝如下寶石(注意使用正斜線而非反斜線,如果你用反斜槓它會失敗):

    創業板安裝mysql2 --platform =紅寶石 - 「--with-mysql- DIR = 「C:/ MySQL的連接器/」」

  • 希望這會有所幫助,並希望有人會注意誰想要做的Ruby on Rails開發的一些Windows 8.1的用戶。

    +0

    嘗試'創業板安裝mysql2' – house9

    +1

    的mysql2寶石已經是不顯示的錯誤安裝。請閱讀我的問題。 – EastsideDeveloper

    +0

    我使用64位Ruby 2.0運行64位Windows8.1。我可以確認這個解決方案有效。在#9之前,我必須再增加一組。我必須刪除Bundle已經安裝的mysql2 gem。當我嘗試其他人的解決方案時,Bundle未能安裝它們,但它仍然創建了gem目錄並安裝了一些文件。在步驟9之前刪除它們使其工作! –

    回答

    1

    當您安裝mysql2時,是否下載了需要的lib文件?


    我沒有安裝在Windows 8,但Windows 7需要有this file給mysql的依賴需要幫助它工作。你可以看到varioustutorials如何做到這一點,我就勾勒出一個簡單的概述這裏:

    - 解壓mysql connector file

    C:\mysql-connector-c-6.1.3-win32\(或沒有任何空格類似的路徑)

    - 再次運行mysql2寶石安裝程序:

    gem uninstall mydsql 
    gem install mysql2 --platform=ruby -- '--with-mysql-lib="C:\mysql-connector\lib" --with-mysql-include="C:\mysql-connector\include" --with-mysql-dir="C:\mysql-connector"' 
    

    底線是,我覺得你的mysql2寶石沒有加載它需要運行該文件,可能是因爲它的Windows 8

    +1

    我正在使用64位連接器,而不是32位。除此之外,如果你看看我原來的問題,我說我遵循了我包括的鏈接中的指示,這是你在這裏提供的建議的更加擴展版本。唯一的問題是您提供的示例不起作用,因爲它使用的是Windows樣式的目錄分隔符,但安裝程序需要Linux樣式的目錄分隔符。 – EastsideDeveloper

    +0

    查看我對答案的編輯 – EastsideDeveloper

    +0

    不錯!你修好了! –