시나트라가 그냥 가수인 줄 알았는데...?
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를 준비할 수 있는 편리한 도구이기도 합니다!
출처
Reference
이 문제에 관하여(시나트라가 그냥 가수인 줄 알았는데...?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jgarberosource/i-thought-sinatra-was-just-a-singer-40gm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)