Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

packaging as rubygems #51

Merged
merged 1 commit into from
Jan 4, 2021
Merged

packaging as rubygems #51

merged 1 commit into from
Jan 4, 2021

Conversation

takahashim
Copy link
Contributor

こんな感じでgemにできるはずです

Comment on lines +42 to +47
# RubyGems
/.bundle/
/.yardoc
/_yardoc/
/coverage/
/pkg/
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bundlerでgemのテンプレートを作った時に生成される.gitignoreから持ってきました

Comment on lines +3 to +6
# Specify your gem's dependencies in pandoc2review.gemspec
gemspec

gem "rake", "~> 12.0"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gemにする場合、依存ライブラリは*.gemspecから持ってくるようになるのでGemfileには直接書かなくなります

@kmuto
Copy link
Owner

kmuto commented Jan 4, 2021

ふぉー、ありがとうございます。こういうラッパーだけなgemってrubygemsに入れるのはありなんですかね?

@@ -1,5 +1,5 @@
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
# Copyright 2020 Kenshi Muto
require_relative 'pandoc2review-lib'
require 'pandoc2review'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

実行ファイルはexe以下、ライブラリはlib以下に収めることになるので少し変更しています

@@ -6,7 +6,7 @@
require 'open3'

def main
bindir = Pathname.new(__FILE__).realpath.dirname
luadir = Pathname.new(__FILE__).realpath.dirname
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

*.luaもlibに収めるようにしています(それが一番シンプルそうだったので。本当は専用ディレクトリを用意した方がよいかも?)

Comment on lines +1 to +29
Gem::Specification.new do |spec|
spec.name = "pandoc2review"
# spec.version = Pandoc2review::VERSION
spec.version = "1.1.0"
spec.authors = ["kmuto"]
spec.email = ["[email protected]"]

spec.summary = %q{Re:VIEW Filter/Writer for Pandoc.}
spec.description = %q{Re:VIEW Filter/Writer for Pandoc.}
spec.homepage = "https://github.com/kmuto/pandoc2review"
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")

spec.metadata["homepage_uri"] = spec.homepage
spec.metadata["source_code_uri"] = "https://github.com/kmuto/pandoc2review"
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."

# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
end
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]

spec.add_dependency('unicode-eaw')
spec.add_development_dependency('simplecov')
spec.add_development_dependency('test-unit')
end
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この辺もbundlerが生成するものをベースにしています

require 'simplecov'
SimpleCov.start
require 'test/unit'
require_relative '../pandoc2review-lib'
require 'pandoc2review'
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test::Unitのおすすめがlibを$LOADPATHに突っ込む方式だったので、それに合わせています

@takahashim
Copy link
Contributor Author

lib/pandoc2review.rbはクラスかモジュールにするのが定番なのですが、とりあえずはそのままにしてあります。

@kmuto
Copy link
Owner

kmuto commented Jan 4, 2021

lib/pandoc2review.rbはクラスかモジュールにするのが定番なのですが、とりあえずはそのままにしてあります。

はい、gem化するならクラス化しようかなと思っておりました。
いただいたものを見ながら調整してみますね!

@takahashim
Copy link
Contributor Author

ふぉー、ありがとうございます。こういうラッパーだけなgemってrubygemsに入れるのはありなんですかね?

スクリプトを配布する標準の方式がRubyGemsしかないので、ラッパーでも何でもrubygemsにしておくのが良さそうではあります。

@kmuto
Copy link
Owner

kmuto commented Jan 4, 2021

ひととおり確認しました、ありがとうございます!
exe/pandoc2reviewはgemなしでも使いたいのでreview-compileみたいにLOAD_PATH追加を入れたいな…と思っています。

@kmuto
Copy link
Owner

kmuto commented Jan 4, 2021

マージして、アドバイスをもとに修正してみます

@kmuto kmuto merged commit 074dde9 into kmuto:main Jan 4, 2021
@takahashim takahashim deleted the rubygems branch January 4, 2021 16:20
@takahashim
Copy link
Contributor Author

なるほどです。
そういえば、Ruby 2.4.x以降であれば、File.realpathKernel#__dir__を使って

$LOAD_PATH.unshift(File.realpath('../lib', __dir__))

で実行ファイルからlib以下のファイルにパスを通せそうな気がしました(という話はRe:VIEWのリポジトリでやるべきか)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants