ここのレールn00b-いくつかの支援が必要です。Rails3アプリをLinuxからWindowsに移植しようとしています。私のGemfileは次のようになります。
source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
gem 'ruby-oci8', '1.0.6'
このWindowsマシンにはOracleクライアントがないため、ruby-oci8gemをネイティブにコンパイルすることはできません。
Gemfileの「ruby-oci8」行をコメントアウトし、ここから手動でgemをインストールしました:http://rubygems.org/downloads/ruby-oci8-1.0.6-x86-mswin32-60.gem。また、必要なDLLをにコピーしましたruby\bin
。
私はそれが機能することを確認しました:
ruby -rubygems -e "require 'oci8'; OCI8.new('user','password','pasdev:2700/gen11dvu').exec('select * from ARCS_USER_LO
GON') do |r| puts r.join(','); end"
これは私のデータベースから多くのデータを返すので、私はそれが機能することを知っています。
ただし、require 'oci8'
Railsコンソール(または実行中のアプリ)から実行しようとすると、次のようになります。
LoadError: no such file to load -- oci8
これはb/c RailsがGemfileで指定されたgemのみをロードすることで発生すると思いますが、指定方法がわかりません。必要なgemをすでにインストールしています:
C:\javadev\ashbtw3>gem list
*** LOCAL GEMS ***
activerecord (3.0.0)
bundler (1.0.21, 1.0.0)
rails (3.0.0)
rake (0.8.7)
ruby-oci8 (1.0.6 x86-mswin32-60)
...etc...
しかし、Gemfileでこの行のコメントを外すと、次のようになります。
gem 'ruby-oci8', '1.0.6'
bundlerは別の1.0.6をダウンロードしてコンパイルしようとしますが、もちろん失敗します。また、これらのバリエーションをすべて試しましたが、失敗しました。
gem 'ruby-oci8', '1.0.6', :platforms => :mingw
gem 'ruby-oci8', '1.0.6-x86-mswin32-60', :platforms => :mingw32
gem 'ruby-oci8-1.0.6-x86-mswin32-60'
gem 'ruby-oci8', '1.0.6-x86-mswin32-60'
なぜbundlerは私がすでに持っているgemをインストールしようとしているのですか?バージョンとプラットフォームを適切に指定して、このgemがすでにインストールされていることをBundlerに認識させ、Gemfile.lockに含めるにはどうすればよいですか?Oracleクライアントをインストールせずに使用できる他の解決策はありますか?
編集1:
カイルの提案に従って、私は次のことを試みました:
gem 'ruby-oci8', :path => 'C:/Ruby187/lib/ruby/gems/1.8/gems/ruby-oci8-1.0.6-x86-mswin32-60
これにより、Bundlerが正常に実行されました。
Using ruby-oci8 (1.0.6) from source at C:/Ruby187/lib/ruby/gems/1.8/gems/ruby-oci8-1.0.6-x86-mswin32-60
ただし、Railsコンソールから「oci8」を要求しようとすると、次のようになります。
C:\javadev\ashbtw3>ruby script\rails console
Loading development environment (Rails 3.0.0)
irb(main):001:0> require 'oci8'
LoadError: no such file to load -- oci8lib
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:225:in `load_dependency'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:591:in `new_constants_in'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:225:in `load_dependency'
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'
from C:/Ruby187/lib/ruby/gems/1.8/gems/ruby-oci8-1.0.6-x86-mswin32-60/lib/oci8.rb:20
from C:/Ruby187/lib/ruby/gems/1.8/gems/activesupport-3.0.0/lib/active_support/dependencies.rb:239:in `require'
欠落しているファイルはext/oci8
、インストールされているgemディレクトリの下にありますが、表示されません。
私にできる追加のことはありますか?