시나트라가 그냥 가수인 줄 알았는데...?

5555 단어 rubyrailswebdev

Sinatra는 누구(또는 무엇)입니까?



처음 Ruby를 배우기 시작했을 때 Sinatra라는 단어를 많이 접했습니다. 그리고 그 노래를 들었을 때 귓가에 맴도는 것은 Frank Sinatra의 'My Way'뿐이었습니다. Frank Sinatra는 Ruby 또는 코딩과 어떤 관련이 있습니까? Ruby의 맥락에서 배우기 시작했을 때도 여전히 이해하기 어려웠기 때문에 좀 더 철저히 이해하는 데 시간을 할애했습니다. 이제 Sinatra가 꽤 멋지기 때문에 제가 배운 것을 다른 사람들과 공유하고 싶습니다!

기본적으로 Sinatra는 Ruby와 Ruby에서 개발된 라이브러리(예: ActiveRecord)를 사용하여 모의 프런트엔드 웹 애플리케이션을 만들 수 있는 DSL 또는 도메인별 언어입니다. 저는 Flatiron School의 강사로부터 Sinatra가 Ruby on Rails의 훈련용 바퀴와 같다는 말을 들었습니다. Ruby on Rails는 사용자에게 효율적이고 강력한 애플리케이션을 생성할 수 있는 충분한 코드와 리소스를 제공하는 강력한 개발 프레임워크입니다. 훨씬 적은 코드와 더 쉬운 설정으로 Sinatra를 사용하면 Ruby 초보자도 웹 개발을 할 수 있습니다.

Sinatra를 어떻게 설정합니까?



동료 Flatiron 학생이 Sinatrahere를 설정하는 단계를 자세히 설명하는 블로그 게시물을 가지고 있습니다. 하지만 몇 가지가 변경되었습니다! 그래서 여기에서 더 최신 버전을 제공하겠습니다.

1). database.yml 및 environment.rb 파일을 모두 사용하여 구성 파일을 만듭니다.

데이터베이스.yml:

default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

test:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3


이렇게 하면 파일을 데이터베이스에 연결할 수 있습니다.

환경.rb 파일:

ENV['RACK_ENV'] ||= "development"

require 'bundler/setup'
Bundler.require(:default, ENV['RACK_ENV'])

require_all 'app'


이렇게 하면 모델 및 컨트롤러가 있는 앱 폴더가 나머지 파일에 연결됩니다. Sinatra가 작동하려면 이 두 가지가 모두 필요합니다.

2). gemfile에 올바른 gem이 있는지 확인하십시오.

설치해야 하는 gem은 다음과 같습니다.

source "https://rubygems.org"

gem "sinatra", "~> 2.1"

gem "thin", "~> 1.8"

gem "rack-contrib", "~> 2.3"

gem "rack-cors", "~> 1.1"

gem "activerecord", "~> 6.1"

gem "sinatra-activerecord", "~> 2.0"

gem "rake", "~> 13.0"

gem "sqlite3", "~> 1.4"

gem "require_all", "~> 3.0"

group :development do
  gem "pry", "~> 0.14.1"
  gem "rerun"
end


삼). config.ru 파일을 생성합니다.

이 파일을 통해 프런트엔드 코드와 Ruby 코드 사이의 중개자 역할을 하는 애플리케이션 컨트롤러를 사용할 수 있습니다. 이 파일이 있어야 합니다.

require_relative "./config/environment"

use Rack::Cors do
  allow do
    origins '*'
    resource '*', headers: :any, methods: [:get, :post, :delete, :put, :patch, :options, :head]
  end
end

use Rack::JSONBodyParser

run ApplicationController ## Most critical yet forgotten line!


4). 애플리케이션 컨트롤러를 만듭니다.

이것은 app/controllers 폴더에 생성되어야 하는 파일입니다. 일반 모델과 비슷해 보이지만 몇 가지 중요한 차이점이 있습니다.

class ApplicationController < Sinatra::Base
  set :default_content_type, 'application/json'

  get "/" do
     { message: "I love Frank Sinatra!" }.to_json
  end

  get "/games" do
     Game.all.to_json
  end
end


이후에 bundle exec rake server 를 실행하면 http://localhost9292 으로 이동하게 되고 거기에서 위에서 제가 json에 작성한 메시지를 발견하게 됩니다! http://localhost9292/games 으로 이동하면 json으로 작성된 모든 game 개체의 배열을 볼 수 있습니다!

Javascript와 React에 익숙하다면 웹사이트에서 정보를 얻으려면 가져오기 요청을 해야 한다는 것을 알고 계실 것입니다. 그러한 요청을 할 때 우리는 데이터가 있는 URL(예: localhost)을 사용합니다. 예를 들어:

useEffect(() => {
    fetch("http://localhost:9292/games")
      .then((r) => r.json())
      .then((data) => setGames(data));
  }, []);


기본적으로 수행한 작업은 가져오기 요청에서 호출할 수 있는 자체 링크를 설정하는 것입니다. 데이터가 있는 서버를 찾는 대신 직접 서버를 만들 수 있습니다!

이제 우리가 할 수 있는 것은 컨트롤러 폴더에 Ruby 및 ActiveRecord를 사용하여 데이터의 모든 부분을 호출할 수 있는 모든 종류의 링크를 만드는 것입니다. 특정 모델의 한 인스턴스만 렌더링하고 싶습니까? 아니면 다른 것의 처음 10개를 렌더링하고 싶습니까? 이러한 방식으로 Sinatra를 사용하는 것의 장점은 이 정보를 쉽게 수집하고 많은 노력을 필요로 하지 않는 방식으로 프런트엔드로 보낼 수 있다는 것입니다.

따라서 Sinatra는 환상적인 가수일 뿐만 아니라 Ruby 초보자가 Ruby on Rails를 준비할 수 있는 편리한 도구이기도 합니다!

출처


  • http://sinatrarb.com/intro.html
  • https://www.netguru.com/blog/ruby-versus-ruby-on-rails#:~:text=Ruby%20is%20an%20open%20source,for%20its%20use%20and%20application
  • https://webapps-for-beginners.rubymonstas.org/sinatra/sinatra_rails.html#:~:text=Sinatra%20is%20much%20more%20lightweight,know%20how%20to%20use%20it
  • https://flatironschool.com/blog/how-to-build-a-sinatra-web-app-in-10-steps/
  • 좋은 웹페이지 즐겨찾기