贡献

jekyll-import 完全开源,这意味着我们需要您的帮助才能让它变得更好!

遇到问题?

发现某个导入器有问题?抱歉!为了更好地帮助您并确保问题不再发生,我们希望您做几件事

  1. 收集有关您系统的的信息:操作系统和版本、Ruby 版本、Jekyll 版本、jekyll-import 版本。
  2. 您正在使用哪个导入器?请注意这一点。
  3. 收集相关数据。这可能是来自您的数据库或输入文件的数据。这将帮助我们诊断问题发生的位置。
  4. 如果您从命令行运行 jekyll-import,请确保指定 --trace 选项。
  5. 打开一个新问题,描述上述四点,以及您期望咒语产生的结果。

您应该很快就能得到帮助。一如既往,如果您有任何疑问,请查看 我们的帮助仓库

创建新导入器

所以您有一个新的系统,您希望能够从中导入?太棒了!向 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 分支上,然后 提交一个拉取请求。谢谢!