贡献
jekyll-import 完全开源,这意味着我们需要您的帮助才能让它变得更好!
遇到问题?
发现某个导入器有问题?抱歉!为了更好地帮助您并确保问题不再发生,我们希望您做几件事
- 收集有关您系统的的信息:操作系统和版本、Ruby 版本、Jekyll 版本、jekyll-import 版本。
- 您正在使用哪个导入器?请注意这一点。
- 收集相关数据。这可能是来自您的数据库或输入文件的数据。这将帮助我们诊断问题发生的位置。
- 如果您从命令行运行
jekyll-import
,请确保指定--trace
选项。 - 打开一个新问题,描述上述四点,以及您期望咒语产生的结果。
您应该很快就能得到帮助。一如既往,如果您有任何疑问,请查看 我们的帮助仓库。
创建新导入器
所以您有一个新的系统,您希望能够从中导入?太棒了!向 jekyll-import
添加一个新导入器非常简单。在此示例中,我们将创建 Columbus
导入器。
首先:创建导入器所在的文件。在本例中,该文件为 lib/jekyll-import/importers/columbus.rb
。在此文件中,我们将添加此模板
module JekyllImport
module Importers
class Columbus < Importer
def self.require_deps
JekyllImport.require_with_fallback(%w(
safe_yaml
mysql2
))
end
def self.specify_options(c)
c.option "dbname", "--dbname DB", "Database name (default: '')"
c.option "user", "--user USER", "Database user name (default: '')"
c.option "password", "--password PW", "Database user's password (default: '')"
c.option "host", "--host HOST", "Database host name (default: 'localhost')"
end
def self.process(opts)
options = {
:dbname => opts.fetch("dbname", ""),
:user => opts.fetch("user", ""),
:password => opts.fetch("password", ""),
:host => opts.fetch("host", "")
}
# Do the magic!
end
end
end
end
让我们快速浏览一下。
self.require_deps
在运行导入器之前调用此函数,以确保用户系统上已安装所有必需的 gem 依赖项。
self.specify_options
将 specify_options
函数传递给 c
,它是此导入器的 Mercenary::Command
实例。它允许你为导入器指定正确的选项,以便与导入器的命令行界面配合使用。 jekyll-import
设置其他所有内容 - 只需指定这些选项,你就可以成功了。
self.process
神奇之处!此方法应从你的 Columbus 源读取,然后输出一个 Jekyll 网站。
可选:self.validate
此函数完全是可选的,但允许对选项进行一些验证。此方法允许你以任何你希望的方式验证选项。例如
def self.validate(opts)
abort "Specify a username!" if opts["username"].nil?
abort "Your username must be a number." unless opts["username"].match(%r!\A\d+\z!)
end
一旦你的导入器开始工作(使用 script/console
进行测试),你就可以添加文档了。添加你的新文件:./docs/_importers/columbus.md
。以其他导入器之一为例。你只需添加基本用法,你就可以成功了。
一切都设置好了吗?将所有内容添加到 jekyll-import
分支上,然后 提交一个拉取请求。谢谢!