gpt4 book ai didi

ruby - 如何构建自己的 gem 并在另一个项目中使用它?

转载 作者:太空宇宙 更新时间:2023-11-03 17:57:56 26 4
gpt4 key购买 nike

我正在尝试构建我的第一个 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'

然后我可以执行“bundle 安装”, bundler 会正确找到我所有的依赖项并将它们放入供应商/缓存中:

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

我快要拔头发了...有人对如何解决这个问题有任何想法吗?

最佳答案

试试这个怎么样:

require "rubygems"
require "bundler/setup"

而不仅仅是 ruby​​gems?

关于ruby - 如何构建自己的 gem 并在另一个项目中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10168561/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com