如何在生产服务器上运行Yard服务器?

3
我该如何在生产服务器上运行Yard服务器? 也许可以使用一些任务? 通过capistrano加载,使用passenger和nginx,Jenkins(Hudson)。
3个回答

2
我发现最简单的方法就是在我的Rails应用程序中将生成的文档文件夹从/public符号链接。您只需要确保js/css资源可以通过相同的路径访问即可。
例如:
$ cd <railsapp>
$ ls
Gemfile
app/
..
public/
doc/ <- Folder that contains the html files generated by yard
$ cd public/
$ ln -s ../doc/ docs

这将为您的文档提供 /docs/index.html 的服务。
基于 JavaScript 的类/方法/文件搜索仍然可用,因为它是基于 JavaScript 的。然而,出现在顶部的搜索不会出现在此方法中。但是我发现基于 JavaScript 的搜索已经足够了。

1
我使用这个Shell脚本:
#!/bin/sh
#or you process here
PROCESS='ruby */yard server'
PID=`pidof $PROCESS`

start() {
  yard server &
}

stop() {
  if [ "$PID" ];then
    kill -KILL $PID
    echo 'yard is stopped'
  fi
}

case "$1" in
start)
  start
;;
stop)
  stop
;;
restart)
  stop
  start
;;
*)
echo Usage: $0 [start|stop|restart]
;;
esac

在Hudson中: yard doc && ./yard.sh restart

1

我使用nginx和passenger来提供这个小型Web应用程序:

# ~/Documentation/config.ru
require 'rubygems'
require 'yard'

libraries = {}
gems = Gem.source_index.find_name('').each do |spec|
  libraries[spec.name] ||= []
  libraries[spec.name] << YARD::Server::LibraryVersion.new(spec.name, spec.version.to_s, nil, :gem)
end

run YARD::Server::RackAdapter.new libraries

Nginx虚拟主机:

# /opt/nginx/config/sites-enabled/gems.doc
server {
  listen 80;
  server_name gems.doc;
  root /Users/your-user/Documentation/yard/public;
  rails_env development;
  passenger_enabled on;
}

更多详细内容请参阅此文章:http://makarius.me/offline-rails-ruby-jquery-and-gems-docs-with

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接