1

プロジェクト全体で使用したいいくつかのクラスを含む最初の ruby​​ gem を構築しようとしています。この質問のために、それは test_service_api と呼ばれます。

「gem build test_service_api.spec」を使用して、gem を作成およびビルドしました。次に、「gem install test_service_api-0.0.2.gem」を実行しました。

仕様ファイルは次のとおりです。

# -*- encoding: utf-8 -*-
require File.expand_path('../lib/test_service_api/version', __FILE__)

Gem::Specification.new do |gem|
  gem.authors       = ["Tyler Power"]
  gem.email         = ["tyler@xxx.com"]
  gem.description   = %q{}
  gem.summary       = %q{}
  gem.homepage      = ""

  gem.files         = `git ls-files`.split($\)
  gem.executables   = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
  gem.test_files    = gem.files.grep(%r{^(test|spec|features)/})
  gem.name          = "test_service_api"
  gem.require_paths = ["lib"]
  gem.version       = TestServiceApi::VERSION
end

私は今、小さなテスト プロジェクトで gem を使用しようとしています。テスト プロジェクト Gemfile では、ビルドした gem への依存関係を指定しました。

source 'https://rubygems.org'

gem 'sinatra'
gem 'test_service_api'

その後、「バンドル インストール」を実行すると、バンドラーがすべての依存関係を正しく検出し、それらをベンダー/キャッシュに配置します。

Tylers-MacBook-Pro:Test tyler$ bundle install
Using rack (1.4.1) 
Using rack-protection (1.2.0) 
Using test_service_api (0.0.2) 
Using tilt (1.3.3) 
Using sinatra (1.3.2) 
Using bundler (1.1.3) 
Updating .gem files in vendor/cache
Your bundle is complete! It was installed into ./vendor/bundle

これまでのところすべてがうまくいくように、私が抱えている問題は、テストプロジェクトのソースファイルでgemを要求しようとすると、それが見つからないということです:

require 'rubygems'
require 'sinatra'
require 'test_service_api'

get '/' do
  res = ''
  ENV.each do |k, v|
    res << "#{k}: #{v}<br/>"
  end
  res
end

私の IDE は「ロードするファイルがありません」と文句を言います。アプリを実行しようとすると、次のようになります。

./app.rb:3:in `require': no such file to load -- test_service_api (LoadError)
    from ./app.rb:3

私は髪を引き抜くところです...これを解決する方法について誰かアイデアがありますか?

4

1 に答える 1

4

これを試してみるのはどうですか:

require "rubygems"
require "bundler/setup"

rubygemsだけの代わりに?

于 2012-04-16T07:04:33.580 に答える