{"id":4810,"date":"2014-12-07T10:00:53","date_gmt":"2014-12-07T01:00:53","guid":{"rendered":"http:\/\/www.vincentina.net\/?p=4810"},"modified":"2020-02-23T16:26:38","modified_gmt":"2020-02-23T07:26:38","slug":"sinatra-active-record%e3%80%80%e3%81%aemigration%e3%80%80%e3%82%92%e9%a3%9f%e3%81%99","status":"publish","type":"post","link":"https:\/\/www.vincentina.net\/?p=4810","title":{"rendered":"Sinatra Active Record\u3000\u306eMigration\u3000\u3092\u98df\u3059"},"content":{"rendered":"<h1>\u74b0\u5883\u4f5c\u308a<\/h1>\n<p>\u307e\u3060\u307e\u3060\u521d\u6b69\u7684\u306a\u3068\u3053\u308d\u3082\u67d3\u307f\u3064\u3044\u3066\u306a\u3044\u306e\u3067\u3001\u74b0\u5883\u69cb\u7bc9\u304b\u3089\u7e70\u308a\u8fd4\u3059\u3002<br \/>\nDocker\u3092\u5229\u7528\u3059\u308b\u306e\u3067\u3001\u307e\u305a\u306fCentos6\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u308b\u3002<\/p>\n<h1>sudo docker run -it -p 9292 &#8211;name test centos:centos6 \/bin\/bash<\/h1>\n<p>9292\u306f\u3042\u3068\u304b\u3089\u4f7f\u3046\u306e\u3067\u958b\u3051\u3068\u304d\u307e\u3059\u3002\u304a\u8089\u304c\u98df\u3079\u305f\u3044\u8a33\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<br \/>\n\u304a\u8089\u98df\u3079\u305f\u3044\u3051\u3069\u306d\u3002<br \/>\n\u3053\u3044\u3064\u3092\u53e9\u304d\u307e\u304f\u308b\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u30b7\u30a7\u30eb\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067<\/p>\n<p>\u3055\u3066\u3001\u5148\u7acb\u3064\u3082\u306e\u3092\u7528\u610f\u3057\u307e\u3059\u304b\u306d\u3002<\/p>\n<p><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n# yum update -y\r\n# yum install -y ruby-devel ruby gcc rdoc git tar sudo vim sqlite-devel openssl-devel\r\n\r\n# vi ~\/.gemrc\r\ninstall: --no-rdoc --no-ri\r\nupdate:\u00a0 --no-rdoc --no-ri\r\n\r\n<\/pre>\n<\/p>\n<p>vimrc\u4f55\u304b\u306f\u81ea\u5206\u306e\u3092\u5165\u308c\u305f\u308a\u3057\u3066\u306d\u3002<\/p>\n<p>activesuport\u304cruby 1.9.3\u4ee5\u964d\u3067\u306a\u3044\u3068\u5165\u3089\u306a\u3044\u306e\u3067\u305d\u3082\u305d\u3082ruby\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306a\u3093\u304b\u306f\u5148\u306b\u4e0a\u3052\u3068\u3044\u305f\u65b9\u304c\u697d\u3067\u3059\u3002<\/p>\n<p>\u3066\u4e8b\u3067\u3001rbenv\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/p>\n<p><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n# git clone https:\/\/github.com\/sstephenson\/rbenv.git ~\/.rbenv\r\n\r\n\u7de8\u96c6\u3057\u3061\u3083\u3044\u307e\u3059\u3002\r\n# vi ~\/.bash_profile\r\nexport PATH=&quot;$HOME\/.rbenv\/bin:$PATH&quot;\r\neval &quot;$(rbenv init -)&quot;\r\n\r\n\u6709\u52b9\u306b\u3002\r\n# exec $SHELL -l\r\n\r\n\u4e0a\u624b\u304f\u5165\u3063\u305f\u304b\u78ba\u8a8d\u3002\r\n# rbenv -v\r\nrbenv 0.4.0-129-g7e0e85b\r\n\r\n\u7d9a\u3044\u3066ruby-build\r\n# git clone https:\/\/github.com\/sstephenson\/ruby-build.git ~\/.rbenv\/plugins\/ruby-build\r\n\r\n\u30d0\u30fc\u30b8\u30e7\u30f3\u78ba\u8a8d\u3002\r\n# rbenv install --list\r\n\uff5e\uff5e\u3000\u7565\u3000\uff5e\uff5e\r\n\r\n\u6700\u65b0\u306e\u5b89\u5b9a\u7248\u3092\u3002\r\n# rbenv install -v 2.1.5\r\n\r\n\u30d0\u30fc\u30b8\u30e7\u30f3\u6307\u5b9a\u3057\u3066\u6709\u52b9\u306b\u3002\r\n# rbenv global 2.1.5\r\n\r\n\u78ba\u8a8d\u3002\r\n# ruby -v\r\nruby 2.1.5p273 (2014-11-13 revision 48405) &#x5B;x86_64-linux]\r\n\r\n\u7d42\u4e86\u3002\r\n# rbenv rehash\r\n\r\n<\/pre>\n<\/p>\n<p>bundler\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3001\u3053\u306e\u8fba\u3067\u30b3\u30df\u30c3\u30c8\u3059\u308b\u306e\u3082\u3044\u3044\u304b\u3082\uff1f<\/p>\n<p><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n# gem install bundler\r\n\r\nCtrl + p\u00a0 q \u3067\u30b3\u30f3\u30c6\u30ca\u3092\u629c\u3051\u3066\u3001\u30b3\u30df\u30c3\u30c8\u3002\r\n\r\n$ sudo docker commit \u30b3\u30f3\u30c6\u30ca \u30ea\u30dd\u30b8\u30c8\u30ea\r\n\r\n<\/pre>\n<\/p>\n<h1>Bundle exec<\/h1>\n<p>\u4eca\u56de\u3001Docker\u3067\u72ec\u7acb\u3057\u305f\u74b0\u5883\u3092\u4f5c\u3063\u3066\u3044\u308b\u306e\u3060\u304b\u3089\u3001\u308f\u3056\u308f\u3056Bundle exec\u3057\u306a\u304f\u3066\u3082\u826f\u3044\u3088\u3046\u306a\u6c17\u304c\u3057\u307e\u3059\u304c\u3001\u96f0\u56f2\u6c17\u3082\u5927\u4e8b\u3060\u3068\u601d\u3046\u306e\u3067Bundle exec\u3057\u3066\u307e\u3059\u3002<\/p>\n<p>\u304c\u3001\u3084\u3063\u3066\u3044\u308b\u3046\u3061\u306b<span style=\"font-size: 14pt;\">\u3042\u3042\u3042\u3042\u3042\u3001Bundle exec \u7701\u7565\u3057\u305f\u3041\u3041\u3041\u3041\u3041\u3041\u3041\u3041\u3044<\/span>\u3002<br \/>\n\u3063\u3066\u601d\u3048\u3066\u304d\u305f\u306e\u3067\u3001\u3084\u306f\u308a\u7701\u7565\u3059\u308b\u624b\u9806\u304c\u3042\u3063\u3066\u3057\u304b\u308b\u3079\u304d\u306a\u306e\u3060\u306a\u3068\u611f\u3058\u307e\u3057\u305f\u3002<br \/>\n\u3066\u3044\u3046\u304b\u3001\u3053\u306e\u30c6\u30b9\u30c8\u306e\u70ba\u306b\u4f5c\u3063\u305f\u30b3\u30f3\u30c6\u30ca\u3060\u3057\u305d\u306e\u307e\u307e\u3067\u3082\u3044\u3044\u3058\u3083\u306d\uff1f\uff1f<\/p>\n<p>\u3068\u8a00\u3046\u98a8\u306b\u30eb\u30fc\u30d7\u3059\u308b\u306e\u3067\u3001\u30d0\u30ab\u306a\u81ea\u554f\u81ea\u7b54\u306f\u3053\u306e\u304f\u3089\u3044\u306b\u3057\u3066\u5148\u306b\u9032\u3082\u3046\u3002<\/p>\n<p>\u7d50\u5c40\u3069\u3046\u3057\u305f\u304b\u3068\u3044\u3046\u3068\u3001\u9069\u5f53\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u3063\u3066bundle init \u3057\u307e\u3057\u305f\u3068\u3055\u3002<\/p>\n<p>\u3053\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u4f7f\u3044\u307e\u308f\u3057\u305f\u3044\u306e\u3060\u3088\u306d\u3002<\/p>\n<h1>rack\u306a\u74b0\u5883\u4f5c\u308a<\/h1>\n<p>Gemfile\u306b\u306f<\/p>\n<p><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\nsource &quot;https:\/\/rubygems.org&quot;\r\n\r\ngem 'sinatra'\r\ngem 'activerecord'\r\ngem 'sinatra-activerecord'\r\ngem 'sqlite3'\r\n\r\n# bundle install --path=vendor\/bundle\r\n\r\n<\/pre>\n<\/p>\n<p>\u4eca\u56de\u306frack\u3092\u4f7f\u3044\u305f\u3044\u306e\u3067\u3001config.ru\u3092\u5148\u306b\u4f5c\u308b\u3002<\/p>\n<p><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\nvi config.ru\r\nrequire '.\/app.rb'\r\nrun Sinatra::Application\r\n\r\napp.tb\r\nget '\/' do\r\n'Hello'\r\nend\r\n\r\n\u8d77\u52d5\u3057\u3066\u307f\u3088\u3046\u3002\u4eca\u56de\u306f\u524d\u306e\u3088\u3046\u306a-o \u3068\u304b-e \u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3044\u3089\u306a\u3044\u3002\r\n# bundle exec rackup config.ru\r\n\r\n<\/pre>\n<\/p>\n<p>\u30a2\u30af\u30bb\u30b9\u306f\u3061\u3083\u3093\u3068\u30db\u30b9\u30c8\u304b\u3089\u898b\u3066\u958b\u3044\u3066\u3044\u308b\u30dd\u30fc\u30c8\u306a\u306e\u3067\u3061\u3087\u3063\u3068\u6ce8\u610f\u306d\u3002<\/p>\n<h1>curl <a href=\"http:\/\/localhost:Docker\u3067\u7e4b\u3044\u3067\u308b\u30dd\u30fc\u30c8\u756a\u53f7\">http:\/\/localhost:Docker\u3067\u7e4b\u3044\u3067\u308b\u30dd\u30fc\u30c8\u756a\u53f7<\/a><\/h1>\n<p>\u306a\u306e\u3067\u3001<\/p>\n<p>$ curl <a href=\"http:\/\/localhost:49153\">http:\/\/localhost:49153<\/a><br \/>\nHello<\/p>\n<p>\u3053\u308c\u3067\u6e96\u5099OK\u3067\u3059\u306d\u3002<\/p>\n<h1>migrate<\/h1>\n<p>Rakefile\u3067activerecord\u3068\u3001app.rb\u306b\u63a5\u7d9a\u90e8\u3092\u66f8\u304f\u306e\u3067require\u3002<\/p>\n<p><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n# cat Rakefile\r\nrequire 'sinatra\/activerecord\/rake'\r\nrequire '.\/app'\r\n\r\n\u30bf\u30b9\u30af\u78ba\u8a8d\r\n\r\n# bundle exec rake -T\r\nrake db:create\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Creates the database from DATABASE_URL or config\/database.yml for the current RAILS_ENV (use db:create:all t...\r\nrake db:create_migration\u00a0\u00a0\u00a0 # Create a migration (parameters: NAME, VERSION)\r\nrake db:drop\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Drops the database from DATABASE_URL or config\/database.yml for the current RAILS_ENV (use db:drop:all to dr...\r\nrake db:fixtures:load\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Load fixtures into the current environment's database\r\nrake db:migrate\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Migrate the database (options: VERSION=x, VERBOSE=false, SCOPE=blog)\r\nrake db:migrate:status\u00a0\u00a0\u00a0\u00a0\u00a0 # Display status of migrations\r\nrake db:rollback\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Rolls the schema back to the previous version (specify steps w\/ STEP=n)\r\nrake db:schema:cache:clear\u00a0 # Clear a db\/schema_cache.dump file\r\nrake db:schema:cache:dump\u00a0\u00a0 # Create a db\/schema_cache.dump file\r\nrake db:schema:dump\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Create a db\/schema.rb file that is portable against any DB supported by AR\r\nrake db:schema:load\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Load a schema.rb file into the database\r\nrake db:seed\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Load the seed data from db\/seeds.rb\r\nrake db:setup\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Create the database, load the schema, and initialize with the seed data (use db:reset to also drop the datab...\r\nrake db:structure:dump\u00a0\u00a0\u00a0\u00a0\u00a0 # Dump the database structure to db\/structure.sql\r\nrake db:version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 # Retrieves the current schema version number\r\n\r\n<\/pre>\n<\/p>\n<p>\u3053\u308c\u3067rake db:create_migration\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3002<br \/>\n\u3068\u3044\u3046\u4e8b\u3060\u308d\u3046\u3002<br \/>\n\u3067\u306f\u3001\u5b9f\u969b\u306b\u3084\u3063\u3066\u307f\u308b\u3068\u3002<\/p>\n<p><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n\r\n&#x5B;root@def85521b282 db]# bundle exec rake db:create_migration NAME=create_users\r\ndb\/migrate\/20141205155116_create_users.rb\r\n\r\nUSAGE\r\nhttps:\/\/github.com\/janko-m\/sinatra-activerecord\/blob\/master\/README.md\r\nsinatra-activerecord\/README.md at master \u30fb janko-m\/sinatra-activerecord:\r\n\r\n<\/pre>\n<\/p>\n<p>&nbsp;<\/p>\n<p>\u30b9\u30af\u30ea\u30d7\u30c8\u306f\u3053\u3093\u306a\u611f\u3058\u306b\u3057\u3066\u307f\u307e\u3057\u305f\u3002\u3053\u306e\u5834\u5408\u306f\u3001:users\u3068\u3044\u3046\u306e\u304c\u30c6\u30fc\u30d6\u30eb\u540d\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p><pre class=\"brush: ruby; title: ; notranslate\" title=\"\">\r\n\r\ndb\/migrate\/20141205155116_create_users.rb\r\n\r\n# cat db\/migrate\/20141205155116_create_users.rb\r\nclass CreateUsers &lt; ActiveRecord::Migration\r\ndef change\r\ncreate_table :users do |t|\r\nt.integer :number, :default =&gt; 0\r\nt.string :name\r\nt.string :address\r\nt.timestamps\r\nend\r\nend\r\nend\r\n\r\napp.rb\u306b\u63a5\u7d9a\u90e8\u5206\u3092\u8ffd\u8a18\u3057\u307e\u3059\u3002\r\n\r\napp.rb\r\n\r\nrequire 'sinatra'\r\nrequire 'active_record'\r\n\r\nActiveRecord::Base.establish_connection(\r\nadapter: 'sqlite3',\r\ndatabase: 'development.sqlite3'\r\n)\r\n\r\nget '\/' do\r\n'Hello'\r\nend\r\n\r\n<\/pre>\n<\/p>\n<p>\u3067\u306f\u304a\u307e\u3061\u304b\u306d\u306e\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u306b!<\/p>\n<p>\u306e\u524d\u306b\u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3\u3068\u306f\u306a\u3093\u305e\u3084\uff1f\u3068\u81ea\u5206\u306b\u805e\u3044\u3066\u307f\u308b\u3068\u7b54\u3048\u3089\u308c\u306a\u3044\u3002<br \/>\n\u4f55\u3068\u306a\u304f\u30de\u30a4\u30b0\u30e9\u30c7\u30e5\u30a8\u30fc\u30b7\u30e7\u30f3\u3068\u304b\u30de\u30a4\u30ec\u30dc\u30ea\u30e5\u30fc\u30b7\u30e7\u30f3\u3068\u9593\u9055\u3048\u305d\u3046\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u304c<\/p>\n<p>\u305d\u3082\u305d\u3082\u3001<span style=\"font-size: 14pt;\">my gration<\/span>\u3058\u3083\u306a\u304f\u3066<span style=\"font-size: 18pt;\">migration<\/span> \u3060\u3002<br \/>\n\uff11\u3064\u306e\u5358\u8a9e\u3060\u3002\u305d\u3053\u3093\u3068\u3053\u3088\u308d\u3057\u304f\u3002<\/p>\n<p>\u610f\u5473\u3092\u8abf\u3079\u308b\u3068\u3001\u30c7\u30fc\u30bf\u306a\u3069\u3092\u5225\u306e\u74b0\u5883\u306b\u79fb\u8ee2\u3057\u305f\u308a\u3001\u65b0\u3057\u3044\u74b0\u5883\u306b\u5207\u308a\u66ff\u3048\u305f\u308a\u3059\u308b<br \/>\n\u3068\u3044\u3046\u4e8b\u3089\u3057\u3044\u306e\u3067\u5947\u3057\u304f\u3082\u3001My Revolution\u3060\u3063\u305f\u308amy graduation\u3068\u610f\u5473\u7684\u306b\u8fd1\u3044\u3082\u306e\u3060\u3063\u305f\u3089\u3057\u3044\u3002<br \/>\nrake db:migration\u3067\u4f55\u304c\u3067\u304d\u308b\u306e\u304b\u3068\u306a\u308b\u3068\u3001\u30c6\u30fc\u30d6\u30eb\u3092\u4f5c\u6210\u3057\u305f\u308a\u5909\u66f4\u3092\u52a0\u3048\u305f\u308a\u3067\u304d\u308b\u6a5f\u80fd\u306e\u3088\u3046\u3060\u3002<\/p>\n<p><pre class=\"brush: ruby; title: ; notranslate\" title=\"\">\r\n\r\nbundle exec rake db:migrate\r\n\r\n&#x5B;root@def85521b282 db]# bundle exec rake db:migrate\r\n== 20141205155116 CreateUsers: migrating ======================================\r\n-- create_table(:users)\r\n-&gt; 0.0028s\r\n== 20141205155116 CreateUsers: migrated (0.0029s) =============================\r\n\r\n<\/pre>\n<\/p>\n<p>\u6210\u529f\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u8a18\u8ff0\u3055\u308c\u305f\u901a\u308a\u306b\u30c6\u30fc\u30d6\u30eb\u304c\u4f5c\u6210\u3055\u308c\u305f\u306f\u305a\u3067\u3059\u3002<\/p>\n<p>\u5fc3\u914d\u306a\u306e\u3067\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p><pre class=\"brush: ruby; title: ; notranslate\" title=\"\">\r\n\r\n&#x5B;root@def85521b282 db]# bundle exec rake db:migrate:status\r\n\r\ndatabase: development.sqlite3\r\n\r\nStatus\u00a0\u00a0 Migration ID\u00a0\u00a0\u00a0 Migration Name\r\n--------------------------------------------------\r\nup\u00a0\u00a0\u00a0\u00a0 20141205155116\u00a0 Create users\r\n\r\n\u63a5\u7d9a\u3057\u3066\u30c6\u30fc\u30d6\u30eb\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3059\u3002\r\n\r\n&#x5B;root@def85521b282 db]# sqlite3 development.sqlite3\r\nSQLite version 3.6.20\r\nEnter &quot;.help&quot; for instructions\r\nEnter SQL statements terminated with a &quot;;&quot;\r\nsqlite&gt; .database\r\nseq\u00a0 name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 file\r\n---\u00a0 ---------------\u00a0 ----------------------------------------------------------\r\n0\u00a0\u00a0\u00a0 main\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/root\/db\/development.sqlite3\r\nsqlite&gt; .schema\r\nCREATE TABLE &quot;schema_migrations&quot; (&quot;version&quot; varchar(255) NOT NULL);\r\nCREATE TABLE &quot;users&quot; (&quot;id&quot; INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, &quot;number&quot; integer DEFAULT 0, &quot;name&quot; varchar(255), &quot;address&quot; varchar(255), &quot;created_at&quot; datetime, &quot;updated_at&quot; datetime);\r\nCREATE UNIQUE INDEX &quot;unique_schema_migrations&quot; ON &quot;schema_migrations&quot; (&quot;version&quot;);\r\n\r\n<\/pre>\n<\/p>\n<p>\u51fa\u6765\u3066\u3044\u307e\u3057\u305f\uff01\u3084\u3063\u305f\u306d\u3002<br \/>\n\u3088\u304f\u898b\u308b\u3068id\u3068\u3044\u3046\u4e3b\u30ad\u30fc\u3092\u6301\u3063\u305f\u306e\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u8a18\u8ff0\u3057\u3066\u3044\u306a\u304f\u3066\u3082\u6697\u9ed9\u3067\u751f\u6210\u3055\u308c\u308b\u3082\u306e\u3089\u3057\u3044\u3067\u3059\u3002<\/p>\n<p>\u3053\u308c\u3067\u6e96\u5099\u306f\u3060\u3044\u305f\u3044\u51fa\u6765\u305f\u8a33\u3067\u3042\u3068\u306f\u30a2\u30a4\u30c7\u30a2\u3068\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u30b9\u30ad\u30eb\u304c\u3042\u308c\u3070\u4f55\u3067\u3082\u3067\u304d\u308b\u3068\u3044\u3046\u4e8b\u3002\u305d\u3053\u304c\u5927\u4e8b\u306a\u3093\u3060\u304c\u306d\u3002<\/p>\n<p>\u4eca\u56de\u306fmigrate\u304c\u76ee\u7684\u3060\u3063\u305f\u306e\u3067\u3053\u308c\u306b\u3066\u7d42\u4e86\u3067\u3059\u3058\u3083\uff5e\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u53c2\u8003\u30b5\u30a4\u30c8<\/p>\n<p><a href=\"http:\/\/blog.ruedap.com\/2011\/04\/16\/ruby-sinatra-active-record-3-migrate\" target=\"_blank\" rel=\"noopener noreferrer\">Sinatra\u304b\u3089ActiveRecord 3\u3092\u4f7f\u3046(1)<\/a> \u30de\u30a4\u30b0\u30ec\u30fc\u30b7\u30e7\u30f3 &#8211; \u30a2\u30a4\u30f3\u30b7\u30e5\u30bf\u30a4\u30f3\u306e\u96fb\u8a71\u756a\u53f7:<\/p>\n<p><a href=\"https:\/\/github.com\/janko-m\/sinatra-activerecord\/blob\/master\/README.md\" target=\"_blank\" rel=\"noopener noreferrer\">sinatra-activerecord\/README.md<\/a> at master \u00b7 janko-m\/sinatra-activerecord:<\/p>\n<p><a href=\"http:\/\/nomnel.net\/blog\/sinatra-active-record\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sinatra\u3067ActiveRecord\u4f7f\u3046 &#8211;<\/a> \u98f2\u3093\u3060\u308a\u5bdd\u305f\u308a:<\/p>\n<p>&nbsp;<\/p>\n<div class='wp_social_bookmarking_light'>        <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/www.vincentina.net\/?p=4810\" data-text=\"Sinatra Active Record\u3000\u306eMigration\u3000\u3092\u98df\u3059\" data-via=\"TakekenTw\" data-lang=\"ja\">Tweet<\/a><\/div><\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u74b0\u5883\u4f5c\u308a \u307e\u3060\u307e\u3060\u521d\u6b69\u7684\u306a\u3068\u3053\u308d\u3082\u67d3\u307f\u3064\u3044\u3066\u306a\u3044\u306e\u3067\u3001\u74b0\u5883\u69cb\u7bc9\u304b\u3089\u7e70\u308a\u8fd4\u3059\u3002 Docker\u3092\u5229\u7528\u3059\u308b\u306e\u3067\u3001\u307e\u305a\u306fCentos6\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u4f5c\u308b\u3002 sudo docker run -it -p 9292 &#8211;na &hellip; <a href=\"https:\/\/www.vincentina.net\/?p=4810\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;Sinatra Active Record\u3000\u306eMigration\u3000\u3092\u98df\u3059&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-4810","post","type-post","status-publish","format-standard","hentry","category-server"],"_links":{"self":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts\/4810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4810"}],"version-history":[{"count":0,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=\/wp\/v2\/posts\/4810\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vincentina.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}