본문 바로가기

개발이야기/Ruby, Sinatra, ActiveRecord

[Sinatra] Ruby, db 연결


1. 폴더를 만든다 (ex>. sinatraTest)

2. 폴더를 Sublime 으로 드래그 하면 왼쪽에 네비창이 생긴다.

3. Gemfile 을 만든다 (확장자 없이)
source “http://www.rubygems.org"
gem ’sinatra’

4. 터미널에서 폴더로 들어가서
sudo gem install bundler
(번들러를 설치한다)
sudo bundle install
또는
bundle install
(Gemfile 에 있는 sinatra를 설치한다)

5.  runner.rb 
(루비 파일을 만든다)
require ‘sinatra’
get ‘/‘ do
return “Hello World!!”
end

6. 터미널로 가서 해당 폴더 위치에서
ruby runner.rb
(파일을 실행시킨다. 끌때는 ctrl + c)
그럼 포트번호가 뜰것이다. 예를 들어 4567

7. 크롬을 열고
localhost:4567
을 주소창에 넣고 실행시킨다. 
Hello World!!를 확인할 수 있다.

8. 하지만 코드를 바꿔고 크롬을 새로고침 해도 바뀌지 않는다.
그래서 shotgun 을 이용한다.
Gemfile 에
gem ‘shotgun’
을 추가 코딩한다.

9. 터미널로 가서
sudo bundle install
바꾼 Gemfile 을 install 하여 shotgun을 설치한다.

10. 터미널로 가서
shotgun runner.rb
그럼 포트번호가 뜰것이다.
(ex>. 9393)

11. 크롬으로 가서 주소창에
localhost:9393
이제 runner.rb의 파일을 수정하고 저장하면 크롬의 새로고침으로 바로 확인할 수 있다.

12. runner.rb 에서
return "Hello World!!!!!!!” 대신  
erb :index
를 코딩한다.
(: 와 index를 붙여씀에 주의한다.)

13. 크롬을 새로고침 해주면 error 메세지가 나올 것이다.
그럼 거기 나와있는데로 해당폴더 안에 views 폴더를 만들고 그 아래 index.erb 파일을 만들어준다.

14. index.erb 파일 안에 html 이 들어간다.
대충
<head>
<body>
HiHiHi
</body>
</head>
를 넣고 크롬에서 localhost:9393을 실행해보자 (새로고침)
확인할 수 있을 것이다.

<ActiveRecord>
15. 이제 activerecord를 사용해서 db랑 연결해 보자
먼저 Gemfile로 가서
gem 'sinatra-activerecord'
gem 'sqlite3'
gem ‘rake'
를 추가 코딩한다.

16. 터미널로 가서
sudo bundle install
추가된 3개를 install 한다.

17. Gemfile을 만들듯이
 Rakefile을 만들어준다.
require "sinatra/activerecord/rake"
require "./runner”
를 코딩후 저장 

18. 터미널로 가서
bundle exec rake -T
를 실행해보자
그럼 rake 사용법이 나온다.
bundle exec rake db:rollback => migration을 되돌릴 수 있다.
bundle exec rake db:migrate => migrate 한다. 

19. db를 사용하기 전에 runner.rb 윗 부분에
require "sinatra"
require "sinatra/activerecord"

set :database, "sqlite3:///blog.sqlite3"

class Post < ActiveRecord::Base

end 
를 코딩
(대소문자와 / 갯수를 주의한다. 저장하면 이제  db가 연결된다.)
 
20. 터미널에서 
bundle exec rake db:create_migration NAME=create_users
를 실행하면 폴더안에 db/migrate/---create_users.rb이 생성된것을 확인할 수 있다.

21. create_users.rb 파일안에
class CreateUsers < ActiveRecord::Migration
  def change

       create_table :posts do |t|
            t.string "title"
            t.text "description"
            end
       end
end
를 코딩
(테이블 생성)

22. 터미널에서
bundle exec rake db:migrate



sinatraTest2.zip