DevKitを搭載したWindows 8.1でRuby 2.2.1のクリーンインストールを実行しています。インストール後、次を実行します。
gem install Rails
rails new testapp
cd testapp
Rails server
他のすべてはデフォルトのままにします。
サーバーを実行する代わりに、エラーメッセージが表示されると、プロセスは最後の行で失敗します
in 'require': cannot load such file -- 'nokogiri\nokogiri' (LoadError)
それは毎回起こり、私はそれを修正するために見つけたすべてのものを見て回ってみましたが、今のところ何もうまくいきませんでした。
ここでの問題は何ですか?また、簡単なテストRailsアプリを動作させるにはどうすればよいですか?
Nokogiriは、WindowsでRuby 2.2をまだサポートしていません。次のリリースが予定されています。 https://github.com/sparklemotion/nokogiri/issues/1256 を参照してください
Nokogiriは、Windowsでのネイティブビルド(devkitなど)をサポートしていません。代わりに、ビルド済みDLLを含むgemを提供します。
参加したり、devkitビルドサポートのトピックで見たいディスカッションがあります: https://github.com/sparklemotion/nokogiri/issues/119
まず、現在使用しているノコギリのバージョンをアンインストールします。
gem uninstall nokogiri
ダウンロード Nokogiri 1.6.6.2(x64) または Nokogiri 1.6.6.2(x86)
以下を使用して、このバージョンをローカルにインストールします。
gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x64-mingw32.gem
または、32ビットRubyを実行している場合:
gem install --local C:\Users\$user$\Downloads\nokogiri-1.6.6.2-x86-mingw32.gem
パスは、ファイルのダウンロード先によって異なる場合があります。
Ruby bin\Rails server
を使用してサーバーを再起動してみてください。動作するはずです。
Mike DalessiosとJuliosの回答を組み合わせて、Windows 10でRuby 2.2を使用してNokogiriを実行しました。
gem uninstall nokogiri
を実行します。gem "nokogiri", ">= 1.6.7.rc"
をGemfileに追加します。bundle install
を実行します。bundle update nokogiri
を実行します。Ruby_dir\lib\Ruby\gems\2.2.0\gems\nokogiri-1.6.6.2\ext\nokogiri
を参照しますextconf.rb
を開きますdir_config('iconv').any? or pkg_config('libiconv')
を#376
に追加しますMinGW64
およびMSYS
フォルダーをダウンロードPATH
に追加します(Devkit
パス参照を削除します-動作しません)libxml2
、libxslt
、iconv
ライブラリをダウンロード (または here )Ruby extconf.rb --platform=Ruby --n --use-system-libraries
を実行しますmake
を実行しますmake install
を実行しますバンドルインストール
最初のステップはbundleです。
これにより、事前にパッケージ化されたコンパイラを実行せずに、nokogiri
gemがマシンに配置されます(Windowsではほとんど機能しません)。
これにより、Nokogiriはinstalledとして表示されます。
参照
nokogiri
フォルダーを参照して、ext/nokogiri/extconf.rb
を見つけます。
Open extconf.rb
... dir_config('iconv').any? or pkg_config('libiconv')
を#376
に追加します
標準のNokogiriはlibxml2
を含むiconv
に "rely"をインストールします-明示的に定義する必要があります。そうしないとiconv.h is missing
エラーが発生します。
ツールチェーンを追加
これにはdevkit
を使用しないでください-機能しません。
MinGW
が必要です:
正確なMinGW64
およびMSYS64
フォルダを圧縮しました on Mega (key:!FJtcq25l-QMsNltCxllMhc1IGqORvap8xv8gWxSUbDA
):
PATHに追加
これにより、gcc
およびmake
へのアクセスが許可されます(両方が必要です)。
パスからdevkit
refを削除し、次を追加します。
- MINGW64_PATH/bin
- MSYS64_PATH/bin
ライブラリをダウンロード
Megaにライブラリを追加しました:
ここで解凍します:
すべてのライブラリは this source からのものです。
実行extconf.rb
システムにライブラリがインストールされたら、Ruby extconf.rb
を実行してビルドを構成できます。
32ビット
Ruby extconf.rb --platform=Ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxml2-2.9.2-win32-x86/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/iconv-1.14-win32-x86 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/32bit/libxslt-1.1.28-win32-x86
64ビット
#64 Ruby extconf.rb --platform=Ruby -N -- --use-system-libraries --with-xml2-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64 --with-xml2-include=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxml2-2.9.2-win32-x86_64/include/libxml2 --with-iconv-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/iconv-1.14-win32-x86_64 --with-xslt-dir=C:/Dev/Dependencies/Ruby/lib/nokogiri/64bit/libxslt-1.1.28-win32-x86_64
make
これにより、「Error 1 (ignored)
」と表示されている限り、エラー/警告が発生する可能性があります。
それに続いて、make install
を使用します。
次に、Railsインストールを参照し、Rails s
を実行します。
コンテキストを与えるには:
Windows上のRuby 2.2+はextensionsNokogiriが必要とするものをコンパイルしません。
Gemのextensionsは、gemが使用する追加の依存関係(ライブラリ)です。
Gemをinstallするときに構築されます:
拡張機能 (
拡張機能がないため、Nokogiriの実行が妨げられています。
拡張機能はgemのext
フォルダーに存在します( 詳細についてはこちらをご覧ください ):
Mysql2
、RMagick
、PGSQL
、Nokogiri
などall拡張機能/ライブラリを使用します。
そのため、Windowsでは、gemのインストール時にカスタムスイッチ(--with-opt-dir
)を使用する必要があります。これにより、Ruby /シェル/(cmd
)にgemのファイルをビルドするために必要なlib
/include
ディレクトリーが与えられます( PATH
の動作と同等です)。
Linux
/Mac
では、これらのディレクトリはそれぞれのパッケージマネージャー(brew
/apt-get
)で管理されます。 Windowsにはこれがないため、拡張機能を手動でインストールする必要があります。
Windowsには標準のライブラリセットがないため、自分でダウンロードする必要があります。また、自分でbuildする必要があります(注意が必要です)。
Nokogiriインストールの修正は、適切なライブラリとビルドツールを使用してgemをインストールすることです。
ビルド
Ruby 2.2+との違いは、gemが例外を表示せずに「インストール」することです。 Railsが(notロード(nokogiri/nokogiri.so
エラー)を検出するためだけにインストールされたと思います。
つまり、システムにファイルがあることを確認し、コンパイラを実行してインストールする必要があります。
上記のドキュメントは、その方法を示しているはずです。