{"id":220,"date":"2021-09-30T00:00:00","date_gmt":"2021-09-30T00:00:00","guid":{"rendered":"https:\/\/en.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/"},"modified":"2021-11-17T23:43:03","modified_gmt":"2021-11-17T23:43:03","slug":"build-a-ruby-on-rails-app-with-tidb","status":"publish","type":"post","link":"https:\/\/www.pingcap.com\/ko\/blog\/build-a-ruby-on-rails-app-with-tidb\/","title":{"rendered":"Power Up Your Rails Apps with a NewSQL Database"},"content":{"rendered":"<p><strong>Author:<\/strong> <a href=\"https:\/\/github.com\/hooopo\">Matt Wang<\/a> (Engineer at PingCAP, moderator of Ruby-China community)<\/p>\n<p><strong>Editors:<\/strong> <a href=\"https:\/\/github.com\/septemberfd\">Fendy Feng<\/a>, Tom Dewan<\/p>\n<p>If you are a Ruby on Rails developer, I think you&#8217;ll really enjoy this article. It aims to help you get started with <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\">TiDB<\/a>, an open-source NewSQL database, and use it to power up your Rails applications.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Use_TiDB_to_build_up_your_Ruby_on_Rails_applications\"><\/span>Use TiDB to build up your Ruby on Rails applications<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/github.com\/pingcap\/tidb\">TiDB<\/a> is an open-source NewSQL database that supports Hybrid Transactional and Analytical Processing (HTAP) workloads. It is MySQL compatible and features horizontal scalability, strong consistency, and high availability.<\/p>\n<p>To build apps with Rails, TiDB offers you MySQL interfaces which can be used as the backend database layers. TiDB allows you to use Active Record Object Relational Mapping (ORM) directly, and also provides you with an alternative: the <a href=\"https:\/\/github.com\/pingcap\/activerecord-tidb-adapter\">activerecord-tidb-adapter<\/a>, a lightweight extension of Active Record that offers compatible patches and TiDB-exclusive functions such as <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/sql-statement-create-sequence\">Sequence<\/a>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Getting_started_with_TiDB\"><\/span>Getting started with TiDB<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The instructions below teach you how to build a Rails application with TiDB as the backend storage.<\/p>\n<p>If you already know how to build a Rails app from scratch, you can skip steps 2-4 and start playing with our <a href=\"https:\/\/github.com\/hooopo\/rails-tidb\">demo application<\/a>.<\/p>\n<h3>Step 1: Set up your local TiDB server<\/h3>\n<p>Deploy a TiDB cluster on your local machine.<\/p>\n<ol>\n<li>Install TiUP.\n<p>TiDB provides a smooth deployment experience using <a href=\"https:\/\/docs.pingcap.com\/tidb\/stable\/tiup-overview\">TiUP<\/a>, a package manager for you to manage different cluster components easily in the TiDB ecosystem.<\/p>\n<pre><code class=\"language-shell\">$ curl --proto '=https' --tlsv1.2 -sSf https:\/\/tiup-mirrors.pingcap.com\/install.sh | sh\n<\/code><\/pre>\n<\/li>\n<li>Start TiDB playground.\n<p>Start a TiDB nightly instance by running the <span style=\"background-color: #808080;\"><code>tiup playground<\/code><\/span> command:<\/p>\n<pre><code class=\"language-shell\">$ tiup playground nightly\n<\/code><\/pre>\n<\/li>\n<li>Connect to the TiDB instance in a similar way as you connect to MySQL.\n<pre><code>mysql --host 127.0.0.1 --port 4000 -u root -p\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>Step 2: Initialize the Rails application<\/h3>\n<ol>\n<li>Make sure that you have Ruby and Rails installed, and initiate a Rails app named <code>tidb-rails<\/code>; also be sure to set the database as <code>mysql<\/code> because TiDB speaks the MySQL protocol.\n<pre><code>$ ruby -v\nruby 2.7.0\n\n$ rails -v\nRails 6.1.4\n\n$ rails new tidb-rails --database=mysql --api\n<\/code><\/pre>\n<\/li>\n<li>Add <a href=\"https:\/\/github.com\/pingcap\/activerecord-tidb-adapter\">activerecord-tidb-adapter<\/a> to Gemfile. Activerecord-tidb-adapter allows you to use TiDB as a backend for ActiveRecord and Rails apps.\n<pre><code>$ bundle add activerecord-tidb-adapter --version \"~&gt; 6.1.0\"\n<\/code><\/pre>\n<\/li>\n<li>After you create a new app, edit <code>config\/database.yml<\/code> to configure the connection setting to TiDB.\n<pre><code class=\"language-yaml\">default: &amp;default\n adapter: tidb\n encoding: utf8mb4\n collation: utf8mb4_general_ci\n pool: &lt;%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %&gt;\n host: 127.0.0.1\n port: 4000\n variables:\n   tidb_enable_noop_functions: ON\n username: root\n password:\ndevelopment:\n &lt;&lt;: *default\n database: tidb_rails_development\n<\/code><\/pre>\n<p>Now, TiDB is already set up and ready to use with your Rails app. You don&#8217;t have to configure anything else.<\/li>\n<\/ol>\n<h3>Step 3: Create a database<\/h3>\n<p>Create the local database for your rails application.<\/p>\n<pre><code>$ bundle exec rails db:create\nCreated database 'tidb_rails_development'\nCreated database 'tidb_rails_test'\n<\/code><\/pre>\n<h3>Step 4: Manipulate TiDB data through your Rails app<\/h3>\n<p>Before you play with your app with TiDB, you need to define the model and migrate the database.<\/p>\n<ol>\n<li>Define the model by executing <code>rails g<\/code> command.\n<pre><code>$ bundle exec rails g model user email:string name:string gender:integer\n...\n$ vim .\/db\/migrate\/20210826174523_create_users.rb # edit\n<\/code><\/pre>\n<\/li>\n<li>Edit the <code>db\/migrate\/20210826174523_create_users.rb<\/code> file:\n<pre><code>class CreateUsers &lt; ActiveRecord::Migration[6.1]\n def change\n   create_table :users do |t|\n     t.string :email, index: {unique: true}\n      t.string :name\n     t.integer :gender\n     t.timestamps\n   end\n end\nend\n<\/code><\/pre>\n<\/li>\n<li>Migrate your database.\n<pre><code>$ bundle exec rails db:migrate\n== 20210826174523 CreateUsers: migrating ======================================\n-- create_table(:users)\n  -&gt; 0.1717s\n== 20210826174523 CreateUsers: migrated (0.1717s) =============================\n<\/code><\/pre>\n<\/li>\n<li>Launch the Rails console to play with the app.\n<pre><code>$ bundle exec rails c\nRunning via Spring preloader in process 13378\nLoading development environment (Rails 6.1.4.1)\nirb(main):001:0&gt; 30.times.each { |i| User.create!(email: \"user-#{i}@example.com\", name: \"user-#{i}\", gender: i % 3) }\n  (1.2ms)  select version()\n TRANSACTION (0.8ms)  BEGIN\n User Create (93.5ms)  INSERT INTO `users` (`email`, `name`, `gender`, `created_at`, `updated_at`) VALUES ('user-0@example.com', 'user-0', 0, '2021-08-26 17:50:40.661945', '2021-08-26 17:50:40.661945')\n TRANSACTION (14.9ms)  COMMIT\n...\n\n=&gt; 30\nirb(main):002:0&gt; User.count\n  (8.9ms)  SELECT COUNT(*) FROM `users`\n=&gt; 30\nirb(main):003:0&gt; User.first\n User Load (5.8ms)  SELECT `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1\n=&gt; #&lt;User id: 1, email: \"user-0@example.com\", name: \"user-0\", gender: 0, created_at: \"2021-08-26 17:50:40.661945000 +0000\", updated_at: \"2021-08-26 17:50:40.661945000 +0000\"&gt;\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Try_us_out\"><\/span>Try us out!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Pretty simple, huh? Try TiDB now to develop your Rails applications!<\/p>\n<p>If you have any question or feedback about TiDB during your app building, feel free to contact us. You&#8217;re also welcome to <a href=\"https:\/\/slack.tidb.io\/invite?team=tidb-community&amp;channel=sig-k8s&amp;ref=pingcap-blog\">join our Slack channel<\/a> to have direct conversations with us, or <a href=\"https:\/\/github.com\/pingcap\/tidb\">join us on GitHub<\/a> to help improve TiDB further.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post helps Ruby on Rails developers get started with TiDB and use it as the backend storage layer of Rails applications.<\/p>","protected":false},"author":23,"featured_media":222,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ub_ctt_via":"","footnotes":""},"categories":[18],"tags":[29],"class_list":["post-220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-community","tag-tutorial"],"acf":[],"featured_image_src":"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png","author_info":{"display_name":"Matt Wang","author_link":"https:\/\/www.pingcap.com\/ko\/blog\/author\/matt-wang\/"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Power Up Your Rails Apps with a NewSQL Database | TiDB<\/title>\n<meta name=\"description\" content=\"Learn about the benefits of TiDB and the TiDB Cloud solutions from PingCAP. Read our latest post &quot;Power Up Your Rails Apps with a NewSQL Database&quot; here.\" \/>\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.pingcap.com\/ko\/blog\/build-a-ruby-on-rails-app-with-tidb\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Power Up Your Rails Apps with a NewSQL Database | TiDB\" \/>\n<meta property=\"og:description\" content=\"Learn about the benefits of TiDB and the TiDB Cloud solutions from PingCAP. Read our latest post &quot;Power Up Your Rails Apps with a NewSQL Database&quot; here.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pingcap.com\/ko\/blog\/build-a-ruby-on-rails-app-with-tidb\/\" \/>\n<meta property=\"og:site_name\" content=\"TiDB\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/pingcap2015\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-30T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-17T23:43:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1501\" \/>\n\t<meta property=\"og:image:height\" content=\"501\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matt Wang\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:site\" content=\"@PingCAP\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matt Wang\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/\"},\"author\":{\"name\":\"Matt Wang\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/54e95aa4f68d15c7d5a2b4149fc52f6f\"},\"headline\":\"Power Up Your Rails Apps with a NewSQL Database\",\"datePublished\":\"2021-09-30T00:00:00+00:00\",\"dateModified\":\"2021-11-17T23:43:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/\"},\"wordCount\":471,\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png\",\"keywords\":[\"Tutorial\"],\"articleSection\":[\"Community\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/\",\"url\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/\",\"name\":\"Power Up Your Rails Apps with a NewSQL Database | TiDB\",\"isPartOf\":{\"@id\":\"https:\/\/www.pingcap.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png\",\"datePublished\":\"2021-09-30T00:00:00+00:00\",\"dateModified\":\"2021-11-17T23:43:03+00:00\",\"description\":\"Learn about the benefits of TiDB and the TiDB Cloud solutions from PingCAP. Read our latest post \\\"Power Up Your Rails Apps with a NewSQL Database\\\" here.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png\",\"width\":1501,\"height\":501},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.pingcap.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Power Up Your Rails Apps with a NewSQL Database\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.pingcap.com\/#website\",\"url\":\"https:\/\/www.pingcap.com\/\",\"name\":\"TiDB\",\"description\":\"TiDB | SQL at Scale\",\"publisher\":{\"@id\":\"https:\/\/www.pingcap.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.pingcap.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.pingcap.com\/#organization\",\"name\":\"PingCAP\",\"url\":\"https:\/\/www.pingcap.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png\",\"width\":811,\"height\":232,\"caption\":\"PingCAP\"},\"image\":{\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/pingcap2015\",\"https:\/\/x.com\/PingCAP\",\"https:\/\/linkedin.com\/company\/pingcap\",\"https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/54e95aa4f68d15c7d5a2b4149fc52f6f\",\"name\":\"Matt Wang\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"contentUrl\":\"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg\",\"caption\":\"Matt Wang\"},\"url\":\"https:\/\/www.pingcap.com\/ko\/blog\/author\/matt-wang\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Power Up Your Rails Apps with a NewSQL Database | TiDB","description":"Learn about the benefits of TiDB and the TiDB Cloud solutions from PingCAP. Read our latest post \"Power Up Your Rails Apps with a NewSQL Database\" here.","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.pingcap.com\/ko\/blog\/build-a-ruby-on-rails-app-with-tidb\/","og_locale":"ko_KR","og_type":"article","og_title":"Power Up Your Rails Apps with a NewSQL Database | TiDB","og_description":"Learn about the benefits of TiDB and the TiDB Cloud solutions from PingCAP. Read our latest post \"Power Up Your Rails Apps with a NewSQL Database\" here.","og_url":"https:\/\/www.pingcap.com\/ko\/blog\/build-a-ruby-on-rails-app-with-tidb\/","og_site_name":"TiDB","article_publisher":"https:\/\/facebook.com\/pingcap2015","article_published_time":"2021-09-30T00:00:00+00:00","article_modified_time":"2021-11-17T23:43:03+00:00","og_image":[{"width":1501,"height":501,"url":"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png","type":"image\/png"}],"author":"Matt Wang","twitter_card":"summary_large_image","twitter_creator":"@PingCAP","twitter_site":"@PingCAP","twitter_misc":{"\uae00\uc4f4\uc774":"Matt Wang","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#article","isPartOf":{"@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/"},"author":{"name":"Matt Wang","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/54e95aa4f68d15c7d5a2b4149fc52f6f"},"headline":"Power Up Your Rails Apps with a NewSQL Database","datePublished":"2021-09-30T00:00:00+00:00","dateModified":"2021-11-17T23:43:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/"},"wordCount":471,"publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png","keywords":["Tutorial"],"articleSection":["Community"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/","url":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/","name":"Power Up Your Rails Apps with a NewSQL Database | TiDB","isPartOf":{"@id":"https:\/\/www.pingcap.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage"},"image":{"@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage"},"thumbnailUrl":"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png","datePublished":"2021-09-30T00:00:00+00:00","dateModified":"2021-11-17T23:43:03+00:00","description":"Learn about the benefits of TiDB and the TiDB Cloud solutions from PingCAP. Read our latest post \"Power Up Your Rails Apps with a NewSQL Database\" here.","breadcrumb":{"@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#primaryimage","url":"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png","width":1501,"height":501},{"@type":"BreadcrumbList","@id":"https:\/\/www.pingcap.com\/blog\/build-a-ruby-on-rails-app-with-tidb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pingcap.com\/"},{"@type":"ListItem","position":2,"name":"Power Up Your Rails Apps with a NewSQL Database"}]},{"@type":"WebSite","@id":"https:\/\/www.pingcap.com\/#website","url":"https:\/\/www.pingcap.com\/","name":"\ud2f0DB","description":"TiDB | SQL at Scale","publisher":{"@id":"https:\/\/www.pingcap.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pingcap.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.pingcap.com\/#organization","name":"PingCAP","url":"https:\/\/www.pingcap.com\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/","url":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","contentUrl":"https:\/\/static.pingcap.com\/files\/2021\/11\/pingcap-logo.png","width":811,"height":232,"caption":"PingCAP"},"image":{"@id":"https:\/\/www.pingcap.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/pingcap2015","https:\/\/x.com\/PingCAP","https:\/\/linkedin.com\/company\/pingcap","https:\/\/youtube.com\/channel\/UCuq4puT32DzHKT5rU1IZpIA"]},{"@type":"Person","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/54e95aa4f68d15c7d5a2b4149fc52f6f","name":"Matt Wang","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.pingcap.com\/#\/schema\/person\/image\/","url":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","contentUrl":"https:\/\/static.pingcap.com\/files\/2022\/10\/17234942\/avatar.jpg","caption":"Matt Wang"},"url":"https:\/\/www.pingcap.com\/ko\/blog\/author\/matt-wang\/"}]}},"grav_blocks":false,"card_markup":"<a class=\"card-resource bg-white\" href=\"https:\/\/www.pingcap.com\/ko\/blog\/build-a-ruby-on-rails-app-with-tidb\/\"><div class=\"card-resource__image-container\"><img class=\"card-resource__image\" alt=\"build-rails-apps-with-a-newsql-database.png\" src=\"https:\/\/static.pingcap.com\/files\/2021\/09\/build-rails-apps-with-a-newsql-database.png\" loading=\"lazy\" width=1501 height=501 \/><\/div><div class=\"card-resource__content-container\"><div class=\"card-resource__content-head\"><div class=\"card-resource__category\">Community<\/div><\/div><h5 class=\"card-resource__title\">Power Up Your Rails Apps with a NewSQL Database<\/h5><\/div><\/a>","_links":{"self":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/comments?post=220"}],"version-history":[{"count":2,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/220\/revisions"}],"predecessor-version":[{"id":2916,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/posts\/220\/revisions\/2916"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media\/222"}],"wp:attachment":[{"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/media?parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/categories?post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pingcap.com\/ko\/wp-json\/wp\/v2\/tags?post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}