Skip to content

Commit e06807d

Browse files
authored
Merge pull request #3055 from znz/bitclust-version-guard
古い bitclust が使われている場合に rake が案内を出すようにする
2 parents d2fa080 + 437692a commit e06807d

3 files changed

Lines changed: 48 additions & 6 deletions

File tree

Gemfile.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
GIT
22
remote: https://github.com/rurema/bitclust.git
3-
revision: 1a107cfeb0b934615874c731a35f31ae12706125
3+
revision: 247aa751289fe7e88cfd696b92dfc8d31b3ef2eb
44
specs:
5-
bitclust-core (1.4.0)
5+
bitclust-core (1.5.0)
66
drb
77
json
88
nkf
99
progressbar (>= 1.9.0, < 2.0)
1010
rack
1111
rouge
1212
webrick
13-
bitclust-dev (1.4.0)
14-
bitclust-core (= 1.4.0)
15-
refe2 (1.4.0)
16-
bitclust-core (= 1.4.0)
13+
bitclust-dev (1.5.0)
14+
bitclust-core (= 1.5.0)
15+
refe2 (1.5.0)
16+
bitclust-core (= 1.5.0)
1717

1818
GEM
1919
remote: https://rubygems.org/

Rakefile

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,39 @@ def system(*commands)
5252
super(*commands)
5353
end
5454

55+
# Gemfile は BITCLUST_PATH(既定値 ../bitclust)にディレクトリが存在すると
56+
# そちらの bitclust を優先する。古いチェックアウトが残っていると
57+
# `cannot load such file -- drb` や `invalid option: --markdowntree` のような
58+
# 分かりにくいエラーで失敗するので、ビルド前に検査して案内を出す
59+
# (https://github.com/rurema/bitclust/issues/230)
60+
REQUIRED_BITCLUST_VERSION = Gem::Version.new("1.5.0")
61+
def check_bitclust_version!
62+
begin
63+
require "bitclust/version"
64+
rescue LoadError
65+
abort "bitclust を読み込めませんでした。bundle install を実行してください。"
66+
end
67+
version = Gem::Version.new(BitClust::VERSION)
68+
return if version >= REQUIRED_BITCLUST_VERSION
69+
location = $LOADED_FEATURES.grep(%r{bitclust/version\.rb\z}).first
70+
abort <<~MESSAGE
71+
古い bitclust (#{version}) が使われています(#{REQUIRED_BITCLUST_VERSION} 以上が必要です)。
72+
使用中の bitclust: #{location}
73+
doctree の Gemfile は、環境変数 BITCLUST_PATH(既定値 ../bitclust)の
74+
ディレクトリが存在するとそちらの bitclust を優先します。過去に clone した
75+
古い bitclust が残っている場合は、次のいずれかで解決してから
76+
bundle install をやり直してください:
77+
* ../bitclust を最新にする (cd ../bitclust && git pull)
78+
* ../bitclust を使わないなら、ディレクトリを削除・改名するか、
79+
BITCLUST_PATH=/nonexistent のように存在しないパスを指定する
80+
MESSAGE
81+
end
82+
5583
# ソースは manual/ の Markdown ツリー(manual/doc は manual/api から自動で取り込まれる)。
5684
# 旧 refm/ は移行ウィンドウ中の凍結ソース。旧経路でビルドしたい場合は
5785
# BITCLUST_SOURCE=refm を指定する。
5886
def generate_database(version)
87+
check_bitclust_version!
5988
puts "generate database of #{version}"
6089
db = "/tmp/db-#{version}"
6190
succeeded = system("bundle", "exec",
@@ -81,6 +110,7 @@ def generate_database(version)
81110
end
82111

83112
def generate_statichtml(version)
113+
check_bitclust_version!
84114
db = "/tmp/db-#{version}"
85115
generate_database(version) unless File.exist?(db)
86116
puts "generate static html of #{version}"

docs/Tutorial.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ https://github.com/rurema/doctree
3737

3838
"自分のアカウント名/doctree" というリポジトリが作られたことを確認してください。
3939

40+
なお、以前に fork したことがある場合は、自分の fork の master が
41+
rurema/doctree より古くなっています。fork のページの「Sync fork」ボタンで
42+
最新に同期してから先へ進んでください。
43+
4044
## 3. リポジトリを作業ディレクトリへと clone する
4145

4246
以下のコマンドを実行し、現在の開発環境にリポジトリをコピーしてください。
@@ -88,6 +92,14 @@ doctree リポジトリで `bundle install` すれば入ります。
8892
$ bundle install
8993
```
9094

95+
なお、doctree の `Gemfile` は、隣のディレクトリ(環境変数 `BITCLUST_PATH`
96+
既定値 `../bitclust`)に bitclust のチェックアウトが存在すると、そちらを
97+
優先して使います(bitclust 自体を開発する人向けの仕組みです)。過去に
98+
clone した古い bitclust が残っていると、`cannot load such file -- drb`
99+
`invalid option: --markdowntree` のようなエラーでビルドに失敗します。
100+
その場合は `../bitclust` を最新にする(`git pull`)か、削除してから
101+
`bundle install` をやり直してください。
102+
91103
typo の修正のような日本語の修正程度であれば以下を行わずとも pull request を送っていただいて問題ありません。
92104
[ReferenceManualFormatDigest](ReferenceManualFormatDigest.md) にあるような書式も修正の対象となる場合はプレビューで確認後に pull request を送っていただけるとありがたいです。
93105

0 commit comments

Comments
 (0)