Class: JekyllImport::Importers::Enki
- Inherits:
-
JekyllImport::Importer
- Object
- JekyllImport::Importer
- JekyllImport::Importers::Enki
- Defined in:
- lib/jekyll-import/importers/enki.rb
Constant Summary collapse
- SQL =
<<~SQL SELECT p.id, p.title, p.slug, p.body, p.published_at as date, p.cached_tag_list as tags FROM posts p SQL
Class Method Summary collapse
-
.process(options) ⇒ Object
Just working with postgres, but can be easily adapted to work with both mysql and postgres.
- .require_deps ⇒ Object
- .specify_options(c) ⇒ Object
- .validate(options) ⇒ Object
Methods inherited from JekyllImport::Importer
inherited, run, stringify_keys, subclasses
Class Method Details
.process(options) ⇒ Object
Just working with postgres, but can be easily adapted to work with both mysql and postgres.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/jekyll-import/importers/enki.rb', line 41 def self.process() dbname = .fetch("dbname") user = .fetch("user") pass = .fetch("password", "") host = .fetch("host", "localhost") FileUtils.mkdir_p("_posts") db = Sequel.postgres(:database => dbname, :user => user, :password => pass, :host => host, :encoding => "utf8") db[SQL].each do |post| name = [ format("%.04d", post[:date].year), format("%.02d", post[:date].month), format("%.02d", post[:date].day), post[:slug].strip, ].join("-") name += ".textile" File.open("_posts/#{name}", "w") do |f| f.puts({ "layout" => "post", "title" => post[:title].to_s, "enki_id" => post[:id], "categories" => post[:tags], }.delete_if { |_k, v| v.nil? || v == "" }.to_yaml) f.puts "---" f.puts post[:body].delete("\r") end end end |
.require_deps ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/jekyll-import/importers/enki.rb', line 29 def self.require_deps JekyllImport.require_with_fallback(%w( rubygems sequel fileutils pg yaml )) end |
.specify_options(c) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/jekyll-import/importers/enki.rb', line 22 def self.(c) c.option "dbname", "--dbname", "Database name." c.option "user", "--user", "User name." c.option "password", "--password", "Database password. (default: '')" c.option "host", "--host", "Database host name. (default: 'localhost')" end |
.validate(options) ⇒ Object
16 17 18 19 20 |
# File 'lib/jekyll-import/importers/enki.rb', line 16 def self.validate() %w(dbname user).each do |option| abort "Missing mandatory option --#{option}." if [option].nil? end end |