2012-07-27 67 views
2

我們正在開發一些寶石,並希望將它們託管在本地gem服務器上,然後與捆綁軟件一起使用。當我嘗試將gem推送到服務器時,我得到了404的/api/v1/gems。這發生在我們的實際服務器上,當我嘗試在我的筆記本電腦本地運行它時(都在gem v1.8.24上)。無法將寶石推向私人寶石服務器

這裏是一個正在運行的寶石服務器終端會話:

$ gem --version 
1.8.24 
$ gem server 
Server started at http://0.0.0.0:8808 
Server started at http://[::ffff:0.0.0.0]:8808 

這裏是我試圖把一個任意寶石:

$ gem --version 
1.8.24 
$ gem push --host http://127.0.0.1:8808 awesome_print-1.0.2.gem 
Pushing gem to http://127.0.0.1:8808... 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> 
<HTML> 
    <HEAD><TITLE>Not Found</TITLE></HEAD> 
    <BODY> 
    <H1>Not Found</H1> 
    `/api/v1/gems' not found. 
    <HR> 
    <ADDRESS> 
    WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) at 
    127.0.0.1:8808 
    </ADDRESS> 
    </BODY> 
</HTML> 

是否有一個命令行選項我需要指定要告訴gem server接受推?還是我錯過了別的?

回答

2

看起來像gem server只是爲了服務已存在於系統中的寶石。如果你想推寶石到服務器(通過命令行或其他方式),你應該考慮像Gem in a Box,或者只是手動將它們安裝到你的服務的目錄:

gem install -i <directory> --ignore-dependencies <path/to/gem> 
0

gem server不支持新的Bundler API請求。但是,當Bundler訪問此服務器時,它將回退並獲取舊的索引格式(specs.4.8.gz)。 Bundler API是由於全局(RubyGems.org)索引變得太大/太慢而引入的 - 這對於具有幾個寶石的私有服務器來說不會是問題。如果遇到問題,本地服務器上的GemInABox或雲中的Gemfury是推薦的解決方案。