{"id":1818,"date":"2014-12-16T17:46:06","date_gmt":"2014-12-16T17:46:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1818"},"modified":"2014-12-16T17:46:06","modified_gmt":"2014-12-16T17:46:06","slug":"using-couchbase-lite-rubymotion","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/","title":{"rendered":"Using Couchbase Lite from RubyMotion"},"content":{"rendered":"<p>Couchbase Lite has been released for sometime now, so I thought it was time to give an update on using CouchbaseLite from RubyMotion.<\/p>\n<p>When I ported <a href=\"https:\/\/github.com\/couchbaselabs\/ToDoLite-iOS\">ToDoLite-iOS<\/a> to RubyMotion originally there where some bumps in the road, but it worked over all. For example, there were some problems with RubyMotion not handling lambdas the way CouchbaseLite needs them, but this has been resolved since then. If you don&#39;t know what I mean by that, you can be happy and forget all about it, <a href=\"https:\/\/sideshowcoder.com\/post\/88266500689\/using-couchbaselite-from-rubymotion\">or read up on it<\/a>.<\/p>\n<h2 id=\"so-what-do-i-need-now-to-get-going-with-couchbase-lite-and-ios\">So what do I need now to get going with Couchbase Lite and iOS?<\/h2>\n<p>By now it is possible to go 100% Ruby for a RubyMotion project using Couchbase Lite, which is great. Couchbase Lite has been publicly released, is out of beta and has already received much love in terms of patches to make it work even more reliably cross all platforms. In the case of RubyMotion this made things much easier, and the process is by now:<\/p>\n<ul>\n<li>Add couchbase-lite via cocoapods<\/li>\n<li>Tell RubyMotion where to find the header files<\/li>\n<li>Use it!<\/li>\n<\/ul>\n<h2 id=\"installing-couchbase-lite-via-cocoapods\">Installing Couchbase Lite via Cocoapods<\/h2>\n<p><a href=\"https:\/\/cocoapods.org\">Cocoapods<\/a> is an awesome package manager for iOS and MacOS projects, and it integrates really well with RubyMotion. All there is todo is add cocoapods and motion-cocoapods to your gemfile:<\/p>\n<div class=\"geshifilter\">\n<div class=\"ruby geshifilter-ruby\" style=\"font-family:monospace;\">source <span style=\"color:#996600;\">&#8216;https:\/\/rubygems.org&#8217;<\/span><\/p>\n<p>gem <span style=\"color:#996600;\">&#8216;rake&#8217;<\/span><\/p>\n<p><span style=\"color:#008000; font-style:italic;\"># Build dependencies:<\/span><br \/>gem <span style=\"color:#996600;\">&#8216;cocoapods&#8217;<\/span>, <span style=\"color:#996600;\">&#8216;~> 0.33.1&#8217;<\/span><br \/>gem <span style=\"color:#996600;\">&#8216;motion-cocoapods&#8217;<\/span>, <span style=\"color:#996600;\">&#8216;~> 1.4.0&#8217;<\/span><\/p>\n<p><span style=\"color:#008000; font-style:italic;\"># Add your dependencies:<\/span><br \/>gem <span style=\"color:#996600;\">&#8216;bubble-wrap&#8217;<\/span>, <span style=\"color:#996600;\">&#8216;~> 1.5.0&#8217;<\/span><\/div>\n<\/div>\n<p>Now you can install any cocoapods by adding them to the Rakefile and running &#8220;bundle exec rake pod:install&#8221;:<\/p>\n<div class=\"geshifilter\">\n<div class=\"ruby geshifilter-ruby\" style=\"font-family:monospace;\"><span style=\"color:#6666ff; font-weight:bold;\">Motion::Project::App<\/span>.<span style=\"color:#9900CC;\">setup<\/span> <span style=\"color:#9966CC; font-weight:bold;\">do<\/span> <span style=\"color:#006600; font-weight:bold;\">|<\/span>app<span style=\"color:#006600; font-weight:bold;\">|<\/span><br \/>\u00a0 <span style=\"color:#008000; font-style:italic;\"># Use `rake config&#8217; to see complete project settings.<\/span><br \/>\u00a0 app.<span style=\"color:#9900CC;\">name<\/span> = <span style=\"color:#996600;\">&#8216;ToDoLite-Motion&#8217;<\/span><br \/>\u00a0 app.<span style=\"color:#9900CC;\">frameworks<\/span> <span style=\"color:#006600; font-weight:bold;\">+<\/span>= <span style=\"color:#006600; font-weight:bold;\">[<\/span><span style=\"color:#996600;\">&#8216;Accounts&#8217;<\/span>, <span style=\"color:#996600;\">&#8216;Social&#8217;<\/span><span style=\"color:#006600; font-weight:bold;\">]<\/span><br \/>\u00a0 app.<span style=\"color:#9900CC;\">identifier<\/span> = <span style=\"color:#996600;\">&#8216;com.couchbase.ToDoLite-Motion&#8217;<\/span><\/p>\n<p>\u00a0 <span style=\"color:#008000; font-style:italic;\"># Add config directory files<\/span><br \/>\u00a0 app.<span style=\"color:#9900CC;\">files<\/span> <span style=\"color:#006600; font-weight:bold;\"><<<\/span> <span style=\"color:#CC00FF; font-weight:bold;\">Dir<\/span>.<span style=\"color:#9900CC;\">glob<\/span><span style=\"color:#006600; font-weight:bold;\">(<\/span><span style=\"color:#996600;\">&#8216;.\/config\/*.rb&#8217;<\/span><span style=\"color:#006600; font-weight:bold;\">)<\/span><\/p>\n<p>\u00a0 <span style=\"color:#008000; font-style:italic;\"># Make sure the CouchbaseLite Headers are found<\/span><br \/>\u00a0 <span style=\"color:#008000; font-style:italic;\"># this makes CocoaPods kind of redundant but currently is the only way this works<\/span><br \/>\u00a0 <span style=\"color:#008000; font-style:italic;\">#<\/span><br \/>\u00a0 <span style=\"color:#008000; font-style:italic;\"># https:\/\/equip9.org\/2014\/03\/06\/adding-couchbase-in-a-rubymotion-app.html<\/span><br \/>\u00a0 <span style=\"color:#008000; font-style:italic;\"># https:\/\/groups.google.com\/forum\/#!topic\/rubymotion\/wVqdLWQ5uao<\/span><br \/>\u00a0 <span style=\"color:#008000; font-style:italic;\">#<\/span><br \/>\u00a0 app.<span style=\"color:#9900CC;\">vendor_project<\/span><span style=\"color:#006600; font-weight:bold;\">(<\/span><span style=\"color:#996600;\">&#8216;vendor\/Pods\/couchbase-lite-ios\/CouchbaseLite.framework&#8217;<\/span>,<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color:#ff3333; font-weight:bold;\">:static<\/span>,<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0products: <span style=\"color:#006600; font-weight:bold;\">[<\/span><span style=\"color:#996600;\">&#8216;CouchbaseLite&#8217;<\/span><span style=\"color:#006600; font-weight:bold;\">]<\/span>,<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0headers_dir: <span style=\"color:#996600;\">&#8216;Headers&#8217;<\/span><span style=\"color:#006600; font-weight:bold;\">)<\/span><\/p>\n<p>\u00a0 app.<span style=\"color:#9900CC;\">codesign_certificate<\/span> = <span style=\"color:#996600;\">&#8216;iPhone Developer: Philipp Fehre (6W7Y595HZQ)&#8217;<\/span><\/p>\n<p>\u00a0 app.<span style=\"color:#9900CC;\">pods<\/span> <span style=\"color:#9966CC; font-weight:bold;\">do<\/span><br \/>\u00a0 \u00a0 pod <span style=\"color:#996600;\">&#8216;couchbase-lite-ios&#8217;<\/span>, <span style=\"color:#996600;\">&#8216;~> 1.0&#8217;<\/span><br \/>\u00a0 <span style=\"color:#9966CC; font-weight:bold;\">end<\/span><br \/><span style=\"color:#9966CC; font-weight:bold;\">end<\/span><\/div>\n<\/div>\n<p>Important side note, make sure to include:<\/p>\n<div class=\"geshifilter\">\n<div class=\"ruby geshifilter-ruby\" style=\"font-family:monospace;\">app.<span style=\"color:#9900CC;\">vendor_project<\/span><span style=\"color:#006600; font-weight:bold;\">(<\/span><span style=\"color:#996600;\">&#8216;vendor\/Pods\/couchbase-lite-ios\/CouchbaseLite.framework&#8217;<\/span>,<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<span style=\"color:#ff3333; font-weight:bold;\">:static<\/span>,<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0products: <span style=\"color:#006600; font-weight:bold;\">[<\/span><span style=\"color:#996600;\">&#8216;CouchbaseLite&#8217;<\/span><span style=\"color:#006600; font-weight:bold;\">]<\/span>,<br \/>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0headers_dir: <span style=\"color:#996600;\">&#8216;Headers&#8217;<\/span><span style=\"color:#006600; font-weight:bold;\">)<\/span><\/div>\n<\/div>\n<p>as the headers are not going to be found otherwise.<\/p>\n<h2 id=\"using-couchbase-lite-from-rubymotion-1\">Using Couchbase Lite from RubyMotion<\/h2>\n<p>You can now use Couchbase Lite like you would any other Obj-C library from RubyMotion. For example, to define a view that grabs all the &#8220;lists&#8221; in the database you can write this:<\/p>\n<div class=\"geshifilter\">\n<div class=\"ruby geshifilter-ruby\" style=\"font-family:monospace;\">\u00a0<span style=\"color:#9966CC; font-weight:bold;\">def<\/span> <span style=\"color:#0000FF; font-weight:bold;\">self<\/span>.<span style=\"color:#9900CC;\">queryListsInDatabase<\/span> database<br \/>\u00a0 \u00a0 view = database.<span style=\"color:#9900CC;\">viewNamed<\/span><span style=\"color:#006600; font-weight:bold;\">(<\/span><span style=\"color:#996600;\">&#8220;lists&#8221;<\/span><span style=\"color:#006600; font-weight:bold;\">)<\/span><br \/>\u00a0 \u00a0 <span style=\"color:#9966CC; font-weight:bold;\">if<\/span> !view.<span style=\"color:#9900CC;\">mapBlock<\/span><br \/>\u00a0 \u00a0 \u00a0 map = <span style=\"color:#CC0066; font-weight:bold;\">lambda<\/span> <span style=\"color:#006600; font-weight:bold;\">{<\/span> <span style=\"color:#006600; font-weight:bold;\">|<\/span>doc, emit<span style=\"color:#006600; font-weight:bold;\">|<\/span><br \/>\u00a0 \u00a0 \u00a0 \u00a0 emit.<span style=\"color:#9900CC;\">call<\/span><span style=\"color:#006600; font-weight:bold;\">(<\/span>doc<span style=\"color:#006600; font-weight:bold;\">[<\/span><span style=\"color:#996600;\">&#8220;title&#8221;<\/span><span style=\"color:#006600; font-weight:bold;\">]<\/span>, <span style=\"color:#0000FF; font-weight:bold;\">nil<\/span><span style=\"color:#006600; font-weight:bold;\">)<\/span> <span style=\"color:#9966CC; font-weight:bold;\">if<\/span> doc<span style=\"color:#006600; font-weight:bold;\">[<\/span><span style=\"color:#996600;\">&#8220;type&#8221;<\/span><span style=\"color:#006600; font-weight:bold;\">]<\/span> == <span style=\"color:#996600;\">&#8220;list&#8221;<\/span><br \/>\u00a0 \u00a0 \u00a0 <span style=\"color:#006600; font-weight:bold;\">}<\/span><br \/>\u00a0 \u00a0 \u00a0 view.<span style=\"color:#9900CC;\">setMapBlock<\/span> map, reduceBlock: <span style=\"color:#0000FF; font-weight:bold;\">nil<\/span>, version: <span style=\"color:#996600;\">&#8220;2&#8221;<\/span><br \/>\u00a0 \u00a0 <span style=\"color:#9966CC; font-weight:bold;\">end<\/span><br \/>\u00a0 \u00a0 view.<span style=\"color:#9900CC;\">createQuery<\/span><br \/>\u00a0 <span style=\"color:#9966CC; font-weight:bold;\">end<\/span><\/div>\n<\/div>\n<p>For more details check out the <a href=\"https:\/\/github.com\/couchbaselabs\/TodoLite-Motion\">RubyMotion Sample project on Github<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase Lite has been released for sometime now, so I thought it was time to give an update on using CouchbaseLite from RubyMotion. When I ported ToDoLite-iOS to RubyMotion originally there where some bumps in the road, but it worked [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8996],"class_list":["post-1818","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using Couchbase Lite from RubyMotion - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Couchbase Lite from RubyMotion\" \/>\n<meta property=\"og:description\" content=\"Couchbase Lite has been released for sometime now, so I thought it was time to give an update on using CouchbaseLite from RubyMotion. When I ported ToDoLite-iOS to RubyMotion originally there where some bumps in the road, but it worked [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T17:46:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Philipp Fehre\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Philipp Fehre\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/\"},\"author\":{\"name\":\"Philipp Fehre\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d9f94375eade2bd4d6c45425926ac5da\"},\"headline\":\"Using Couchbase Lite from RubyMotion\",\"datePublished\":\"2014-12-16T17:46:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/\"},\"wordCount\":289,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/\",\"name\":\"Using Couchbase Lite from RubyMotion - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T17:46:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Couchbase Lite from RubyMotion\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d9f94375eade2bd4d6c45425926ac5da\",\"name\":\"Philipp Fehre\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4558f87ca5a9747a153aa7dcec79c3c5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dcd98a6581cde589fb3c604fe8410f7636b30256eb8a60eea7d91a1f3a5662fb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dcd98a6581cde589fb3c604fe8410f7636b30256eb8a60eea7d91a1f3a5662fb?s=96&d=mm&r=g\",\"caption\":\"Philipp Fehre\"},\"description\":\"Philipp Fehre is a Developer Advocate at Couchbase working on creating applications using Ruby\/JRuby (on Rails), Rubymotion, Node.js, Java, and Erlang.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/philipp-fehre\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using Couchbase Lite from RubyMotion - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/","og_locale":"en_US","og_type":"article","og_title":"Using Couchbase Lite from RubyMotion","og_description":"Couchbase Lite has been released for sometime now, so I thought it was time to give an update on using CouchbaseLite from RubyMotion. When I ported ToDoLite-iOS to RubyMotion originally there where some bumps in the road, but it worked [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T17:46:06+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/couchbase-nosql-dbaas.png","type":"image\/png"}],"author":"Philipp Fehre","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Philipp Fehre","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/"},"author":{"name":"Philipp Fehre","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d9f94375eade2bd4d6c45425926ac5da"},"headline":"Using Couchbase Lite from RubyMotion","datePublished":"2014-12-16T17:46:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/"},"wordCount":289,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/","url":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/","name":"Using Couchbase Lite from RubyMotion - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T17:46:06+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-lite-rubymotion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Couchbase Lite from RubyMotion"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d9f94375eade2bd4d6c45425926ac5da","name":"Philipp Fehre","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4558f87ca5a9747a153aa7dcec79c3c5","url":"https:\/\/secure.gravatar.com\/avatar\/dcd98a6581cde589fb3c604fe8410f7636b30256eb8a60eea7d91a1f3a5662fb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dcd98a6581cde589fb3c604fe8410f7636b30256eb8a60eea7d91a1f3a5662fb?s=96&d=mm&r=g","caption":"Philipp Fehre"},"description":"Philipp Fehre is a Developer Advocate at Couchbase working on creating applications using Ruby\/JRuby (on Rails), Rubymotion, Node.js, Java, and Erlang.","url":"https:\/\/www.couchbase.com\/blog\/author\/philipp-fehre\/"}]}},"authors":[{"term_id":8996,"user_id":26,"is_guest":0,"slug":"philipp-fehre","display_name":"Philipp Fehre","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/dcd98a6581cde589fb3c604fe8410f7636b30256eb8a60eea7d91a1f3a5662fb?s=96&d=mm&r=g","author_category":"","last_name":"Fehre","first_name":"Philipp","job_title":"","user_url":"","description":"Philipp Fehre is a Developer Advocate at Couchbase working on creating applications using Ruby\/JRuby (on Rails), Rubymotion, Node.js, Java, and Erlang."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1818","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=1818"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/1818\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=1818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=1818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=1818"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=1818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}