Ease your data discontentment! A safe and easy ruby data migration framework for Contentful
Install the gem and add to the application's Gemfile by executing:
$ bundle add discontentful --group development
If bundler is not being used to manage dependencies, install the gem by executing:
$ gem install discontentful
TODO: Write usage instructions here
module ContentfulTransformations class FileHyperlinksToEmbeddedAssetsPages < Discontentful::Transformation do source_content_model 'page' def each(page) new_body = migrate_rich_text(page.body) new_intro = migrate_rich_text(page.intro) update_entry(page, body: new_body, intro: new_intro) end private def migrate_rich_text(rich_text) replace_rich_text_node(rich_text, nodeType: 'hyperlink') do |node| asset_title = node["data"]["uri"].match /^(https?:\/\/(www\.)?archives\.govt\.nz)?\/files\/(?<name>.*)$/ next unless asset_title.present? asset = find_asset(title: asset_title) if asset.nil? error("Could not find asset with title: #{asset_title}") next end { "nodeType": 'asset-hyperlink', "data": { "target"=>{ "sys"=>{"id"=>asset["_id"], "type"=>"Link", "linkType"=>"Asset"} } }, "content" => node["content"] } end end end end
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/boost/discontentful.