Ubuntu 22.04에서 Ruby on Rails 애플리케이션을 구축하는 방법
소개
루비. 공통 목표가 있는 개발자에게 집합 규칙이 가장 적합하다고 가정하여 응용 프로그램 개발에 대한 독단적인 접근 방식을 취합니다. 따라서 Rails는 대부분의 웹 애플리케이션에 필요한 기본 기능을 제공하기 위해 라우팅, 상태 저장 데이터, 자산 관리 등을 처리하기 위한 규칙을 제공합니다.
Rails는 불필요하게 반복되는 것을 따릅니다.
이 자습서에서는 사용자가 상어와 상어의 행동에 대한 정보를 게시할 수 있는 Rails 애플리케이션을 빌드합니다. 이 프로젝트는 향후 애플리케이션 개발을 위한 출발점이 될 것입니다.
전제 조건
이 자습서를 따르려면 다음이 필요합니다.
- Ubuntu 22.04를 실행하는 로컬 시스템 또는 개발 서버. 개발 머신에는 관리 권한이 있는 루트가 아닌 사용자와
ufw
로 구성된 방화벽이 있어야 합니다. 이를 설정하는 방법에 대한 지침은 Ubuntu 22.04 자습서로 초기 서버 설정을 참조하세요. - Ubuntu 22.04에 Node.js를 설치하는 방법
- Ruby, Ubuntu 22.04에서 rbenv로 Ruby on Rails를 설치하는 방법. 이 튜토리얼은 Ruby 3.2.0, rbenv 1.2.0-52 및 Rails 7.0.4를 사용합니다.
Node.js, Ruby, rbenv 및 Rails가 설치되면 애플리케이션용 데이터베이스를 설치할 준비가 된 것입니다.
1단계 - SQLite3 설치
Rails shark 애플리케이션을 만들기 전에 사용자 데이터를 저장할 데이터베이스가 필요합니다. Rails는 기본적으로 SQLite를 사용하도록 구성되어 있으며 이는 종종 개발에서 좋은 선택입니다. 응용 프로그램 데이터에는 높은 수준의 프로그래밍 확장성이 필요하지 않으므로 SQLite는 응용 프로그램의 요구 사항을 충족합니다.
먼저 터미널 내에서 패키지 색인을 업데이트합니다.
- sudo apt update
다음으로 sqlite3
및 libsqlite3-dev
패키지를 설치합니다.
- sudo apt install sqlite3 libsqlite3-dev
이렇게 하면 SQLite와 필요한 개발 파일이 모두 설치됩니다.
버전을 확인하여 설치가 성공했는지 확인할 수 있습니다.
- sqlite3 --version
Output3.37.2 2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5dalt1
SQLite가 설치되면 애플리케이션 개발을 시작할 준비가 된 것입니다.
2단계 — 새 Rails 프로젝트 만들기
데이터베이스가 설치되어 있으면 새 Rails 프로젝트를 만들고 rails new
명령을 사용하여 Rails가 제공하는 기본 상용구 코드 중 일부에 액세스할 수 있습니다.
다음 명령을 사용하여 sharkapp
라는 프로젝트를 만듭니다.
- rails new sharkapp
출력은 Rails가 새 프로젝트를 위해 생성하는 모든 다른 것을 나타냅니다. 다음 출력은 몇 가지 중요한 파일, 디렉터리 및 명령을 강조 표시합니다.
Output create
. . .
create Gemfile
. . .
create app
. . .
create app/controllers/application_controller.rb
. . .
create app/models/application_record.rb
. . .
create app/views/layouts/application.html.erb
. . .
create config
create config/routes.rb
create config/application.rb
. . .
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
. . .
create config/database.yml
create db
create db/seeds.rb
. . .
run bundle install
. . .
Bundle complete! 15 Gemfile dependencies, 69 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
. . .
다음은 생성된 일부 Rails 파일 및 폴더에 대한 간략한 설명입니다.
Gemfile
: 이 파일은 애플리케이션의 gem 의존성을 나열합니다. gem은 Ruby 소프트웨어 패키지이며 Gemfile을 사용하면 프로젝트의 소프트웨어 요구 사항을 관리할 수 있습니다.app
:app
디렉토리는 기본 애플리케이션 코드가 있는 곳입니다. 여기에는 애플리케이션 자체를 구성하는 모델, 컨트롤러, 보기, 자산, 헬퍼 및 메일러가 포함됩니다. Rails는 MVC 모델이app/models/application_record.rb
,app/controllers/application_controller.rb
및 <와 같은 파일에서 시작할 수 있도록 애플리케이션 수준의 상용구를 제공합니다. code>app/views/layouts/application.html.erb.config
: 이 디렉토리에는 애플리케이션의 구성 설정이 포함되어 있습니다.\nconfig/routes.rb
: 애플리케이션의 경로 선언이 이 파일에 있습니다.config/application.rb
: 애플리케이션 구성 요소에 대한 일반 설정은 이 파일에 있습니다.
마지막으로 Rails는
bundle install
명령을 실행하여Gemfile
에 나열된 종속 항목을 설치합니다.모든 것이 설정되면 새
sharkapp
디렉토리로 이동합니다.- cd sharkapp
sharkapp 디렉토리 내에서 Rails 서버를 시작하여
rails server
명령을 사용하여 애플리케이션이 작동하는지 확인합니다. 로컬 컴퓨터에서 작업 중인 경우 다음 코드를 입력하여 서버를 시작합니다.- rails server
Rails는 기본적으로
localhost
에 바인딩됩니다. 즉, 브라우저에서locahost:3000
으로 이동하여 애플리케이션에 액세스할 수 있습니다.개발 서버에서 작업하는 경우 먼저
3000
포트에서 연결이 허용되는지 확인하십시오.- sudo ufw allow 3000
그런 다음
--binding
플래그로 서버를 시작하여 서버 IP 주소에 바인딩합니다.- rails server --binding=your_server_ip
브라우저에서
http://your_server_ip:3000
으로 이동하여 기본 Rails 랜딩 페이지에 액세스합니다.준비가 되면 터미널에서
CTRL+C
를 눌러 서버를 중지할 수 있습니다.애플리케이션이 생성되고 배치되면 고유한 애플리케이션을 생성하기 위해 Rails 상용구에서 구축을 시작할 준비가 된 것입니다.
3단계 - 애플리케이션 스캐폴딩
상어 응용 프로그램을 만들려면 응용 프로그램 데이터를 관리하기 위한 모델, 해당 데이터와 사용자 상호 작용을 가능하게 하는 보기 및 컨트롤러를 만들어야 합니다. > 모델과 뷰 간의 통신을 관리합니다. 이를 빌드하려면
rails generate scaffold
명령을 사용하세요. 이렇게 하면 애플리케이션에 대한 모델, CRUD(Create, Read, Update, and Delete) 작업, 그리고 부분, 헬퍼 및 테스트에 대한 템플릿이 생성됩니다.generate scaffold
명령은 내부적으로 많은 작업을 수행합니다. 명령에는 모델 이름과 데이터베이스 테이블에서 원하는 필드가 포함됩니다. Rails는 Ruby 클래스를 사용하는 동시에ActiveRecord::Base
클래스도 상속합니다. 이는 Ruby 클래스로 작업하는 것과 동일한 방식으로 모델 클래스로 작업할 수 있음을 의미합니다. 또한 Active Record에서 메서드를 가져올 수도 있습니다. Active Record는 각 클래스가 데이터베이스의 테이블에 매핑되고 해당 클래스의 각 인스턴스가 해당 테이블의 행에 매핑되도록 합니다.다음 명령을 실행하여
Shark
모델, 컨트롤러 및 관련 보기를 생성합니다.- rails generate scaffold Shark name:string facts:text
이 명령의
name:string
및facts:text
옵션은 데이터베이스 테이블에서 만들고 있는 필드와 수락해야 하는 데이터 유형을 나타냅니다. 둘 다 원하는 것을 입력할 수 있는 공간을 제공합니다.text
옵션은 더 많은 문자를 허용합니다.이 명령을 입력하면 생성된 모든 다른 파일이 출력에 표시됩니다.
Outputinvoke active_record create db/migrate/20190804181822_create_sharks.rb create app/models/shark.rb . . . invoke resource_route route resources :sharks invoke scaffold_controller create app/controllers/sharks_controller.rb invoke erb create app/views/sharks create app/views/sharks/index.html.erb create app/views/sharks/edit.html.erb create app/views/sharks/show.html.erb create app/views/sharks/new.html.erb create app/views/sharks/_form.html.erb . . .Rails는
app/models/shark.rb
에서 모델을 생성했고 이에 따라 데이터베이스 마이그레이션을 수행했습니다. . 마이그레이션 파일의 타임스탬프는 예제 출력과 다릅니다.또한
app/controllers/sharks_controller.rb
컨트롤러와app/views/sharks
에 수집된 애플리케이션의 CRUD 작업과 관련된 뷰를 생성했습니다. 이러한 보기 중에는 여러 보기에서 사용되는 코드를 포함하는 부분인_form.html.erb
가 있습니다.마지막으로 Rails는
config/routes.rb
에 리소스가 풍부한 새 경로인resources :sharks
를 추가했습니다. 이렇게 하면 Rails 라우터가 들어오는 HTTP 요청을sharks
컨트롤러 및 관련 보기와 일치시킬 수 있습니다.Rails가 애플리케이션 코드를 구축하는 많은 작업을 수행했지만 어떤 일이 일어나고 있는지 더 잘 이해하기 위해 일부 파일을 살펴볼 가치가 있습니다.
컨트롤러 파일을 이해하려면 터미널에 다음 명령을 입력하십시오.
- cat app/controllers/sharks_controller.rb
Outputclass SharksController < ApplicationController before_action :set_shark, only: %i[ show edit update destroy ] # GET /sharks or /sharks.json def index @sharks = Shark.all end # GET /sharks/1 or /sharks/1.json def show end # GET /sharks/new def new @shark = Shark.new end # GET /sharks/1/edit def edit end # POST /sharks or /sharks.json def create @shark = Shark.new(shark_params) respond_to do |format| if @shark.save format.html { redirect_to shark_url(@shark), notice: "Shark was successfully created." } format.json { render :show, status: :created, location: @shark } else format.html { render :new, status: :unprocessable_entity } format.json { render json: @shark.errors, status: :unprocessable_entity } end end end # PATCH/PUT /sharks/1 or /sharks/1.json def update respond_to do |format| if @shark.update(shark_params) format.html { redirect_to shark_url(@shark), notice: "Shark was successfully updated." } format.json { render :show, status: :ok, location: @shark } else format.html { render :edit, status: :unprocessable_entity } format.json { render json: @shark.errors, status: :unprocessable_entity } end end end # DELETE /sharks/1 or /sharks/1.json def destroy @shark.destroy respond_to do |format| format.html { redirect_to sharks_url, notice: "Shark was successfully destroyed." } format.json { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_shark @shark = Shark.find(params[:id]) end # Only allow a list of trusted parameters through. def shark_params params.require(:shark).permit(:name, :facts) end end컨트롤러는 정보를 가져오고 관련 모델로 전달하는 방법과 특정 보기와 연결하는 방법을 관리합니다. 예를 들어
sharks
컨트롤러에는 표준 CRUD 작업에 대략적으로 매핑되는 일련의 메서드가 포함되어 있습니다. 오류 발생 시 효율성을 높이기 위해 CRUD 함수보다 더 많은 방법이 있습니다.예를 들어,
create
메소드를 고려하십시오.. . . def create @shark = Shark.new(shark_params) respond_to do |format| if @shark.save format.html { redirect_to @shark, notice: 'Shark was successfully created.' } format.json { render :show, status: :created, location: @shark } else format.html { render :new } format.json { render json: @shark.errors, status: :unprocessable_entity } end end end . . .
Shark
클래스의 새 인스턴스가 성공적으로 저장되면redirect_to
는 컨트롤러로 전달되는 새 요청을 생성합니다. 이것은GET
요청이며 최근에 추가한 입력을 사용자에게 표시하는show
메서드에 의해 처리됩니다.오류가 발생하면 Rails는 라우터에 다른 요청을 하는 대신
app/views/sharks/new.html.erb
템플릿을 다시 렌더링하여 사용자가 데이터를 제출할 수 있는 또 다른 기회를 제공합니다.sharks
컨트롤러 외에도 Rails는 컨트롤러의index
메서드에 매핑되는index
보기용 템플릿을 만들었습니다. 이것을 응용 프로그램의 루트 보기로 사용합니다.다음 명령을 실행하여 파일을 출력합니다.
- cat app/views/sharks/index.html.erb
Output<p style="color: green"><%= notice %></p> <h1>Sharks</h1> <div id="sharks"> <% @sharks.each do |shark| %> <%= render shark %> <p> <%= link_to "Show this shark", shark %> </p> <% end %> </div> <%= link_to "New shark", new_shark_path %>index
보기는 데이터베이스의sharks
테이블에 매핑되는Shark
클래스의 인스턴스를 순환합니다. ERB 템플릿을 사용하여 보기는 개별 상어 인스턴스와 연결된 테이블의 각 필드(name
및facts
)를 출력합니다.그런 다음 뷰는
rails generate scaffold
명령으로sharks
자원 경로를 정의할 때 사용할 수 있게 된 헬퍼를 사용합니다.new
보기는 부분이라고 하는 것을 사용합니다. 다음을 실행하여app/views/sharks/new.html.erb
템플릿을 반환합니다.- cat app/views/sharks/new.html.erb
Output<h1>New shark</h1> <%= render "form", shark: @shark %> <br> <div> <%= link_to "Back to sharks", sharks_path %> </div>이 템플릿은 새 상어 항목에 대한 입력 필드가 없는 것처럼 보일 수 있지만
렌더링 양식
에 대한 참조는 템플릿이_form.html.erb
부분을 가져오고 있음을 나타냅니다. 뷰에서 반복되는 코드를 추출합니다._form.html.erb
파일을 출력하여 새 상어 인스턴스가 생성되는 방법을 더 잘 이해할 수 있습니다.- cat app/views/sharks/_form.html.erb
Output<%= form_with(model: shark) do |form| %> <% if shark.errors.any? %> <div style="color: red"> <h2><%= pluralize(shark.errors.count, "error") %> prohibited this shark from being saved:</h2> <ul> <% shark.errors.each do |error| %> <li><%= error.full_message %></li> <% end %> </ul> </div> <% end %> <div> <%= form.label :name, style: "display: block" %> <%= form.text_field :name %> </div> <div> <%= form.label :facts, style: "display: block" %> <%= form.text_area :facts %> </div> <div> <%= form.submit %> </div> <% end %>이 템플릿은 양식 도우미를 사용합니다. 양식 도우미는 특정 모델의 필드와 범위를 사용하여 사용자 입력에서 새 개체를 쉽게 만들 수 있도록 설계되었습니다. 이 예에서
form_with
는model: shark
를 인수로 사용하고 생성되는 새 양식 작성기 개체에는sharks
의 필드에 해당하는 필드 입력이 있습니다. 테이블. 이는 사용자가 상어이름
과 상어사실
을 모두 입력할 수 있는 양식 필드가 있음을 의미합니다.이 양식을 제출하면 애플리케이션의 나머지 부분이 params 메소드를 통해 액세스할 수 있는 사용자 데이터가 포함된 JSON 응답이 생성됩니다. 이렇게 하면 해당 데이터로
ActionController::Parameters
객체가 생성됩니다.이제
rails generate scaffold
가 무엇을 생성했는지 알았으므로 애플리케이션의 루트 보기 설정으로 이동할 수 있습니다.4단계 - 애플리케이션 루트 뷰 생성 및 기능 테스트
이상적으로는 사용자가 애플리케이션의 목적을 즉시 파악할 수 있도록 애플리케이션의 랜딩 페이지가 애플리케이션의 루트에 매핑되기를 원합니다.
예를 들어
Welcome
컨트롤러와 관련index
뷰를 생성하여 사용자에게 애플리케이션의 다른 부분으로 연결될 수 있는 일반 랜딩 페이지를 제공할 수 있습니다.이를 설정하려면
config/routes.rb
에서 라우팅 설정을 수정하여 애플리케이션의 루트를 지정해야 합니다.nano
또는 좋아하는 편집기를 사용하여 편집할config/routes.rb
를 엽니다.- nano config/routes.rb
Rails.application.routes.draw do resources :sharks # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html # Defines the root path route ("/") # root "articles#index" end
더 구체적으로 설정하지 않으면
http://localhost:3000
또는http://your_server_ip:3000
의 기본 보기가 기본값이 됩니다. 레일스 환영 페이지.응용 프로그램의 루트 뷰를 sharks 컨트롤러의
index
뷰에 매핑하려면#
및article
을shark
로 교체:Rails.application.routes.draw do resources :sharks root 'sharks#index' # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
파일을 저장하고 편집이 끝나면 편집기를 종료하십시오.
nano
를 사용하여 파일을 종료한 경우CTRL+X
,Y
를 누른 다음ENTER
를 누르십시오.이제 사용자가 애플리케이션 루트로 이동할 때 기본 Rails 랜딩 페이지가 아닌 상어 랜딩 페이지로 들어갑니다. 또한 이제 새 상어 항목을 만들고 기존 항목을 검토하고 주어진 항목을 편집하거나 삭제할 수 있습니다.
그런 다음 다음 명령을 사용하여 마이그레이션을 실행합니다.
- rails db:migrate
이 출력은 마이그레이션을 확인합니다.
Output== 20230124215633 CreateSharks: migrating ===================================== -- create_table(:sharks) -> 0.0041s == 20230124215633 CreateSharks: migrated (0.0045s) ============================Rails 서버를 다시 시작하십시오. 로컬에서 작업하는 경우 다음을 실행합니다.
- rails s
개발 서버에서 다음을 실행합니다.
- rails s --binding=your_server_ip
로컬에서 작업 중인 경우
localhost:3000
으로 이동하고 개발 서버에서 작업 중인 경우http://your_server_ip:3000
로 이동하여 새 방문 페이지에 액세스:새 상어를 만들려면 새 상어 링크를 클릭하십시오. 이 링크는
sharks/new
경로로 이동합니다.일부 정보를 추가하여 애플리케이션을 테스트할 수 있습니다. Name 필드에 "Great White\를 입력하고 Facts 필드에 "Scary\를 입력합니다.
그런 다음 상어 만들기 버튼을 눌러 상어를 만듭니다.
이 버튼은
before_action
필터 덕분에set_shark
메서드로 설정되는show
경로로 안내합니다. 생성한 상어의 >id:class SharksController < ApplicationController before_action :set_shark, only: %i[ show edit update destroy ] . . . # GET /sharks/1 or /sharks/1.json def show end . . . private # Use callbacks to share common setup or constraints between actions. def set_shark @shark = Shark.find(params[:id]) end . . .
상어 항목에서 이 상어 편집을 눌러 편집 기능을 테스트할 수 있습니다. 그러면 해당 상어의
edit
경로로 이동합니다.백상어에 대한
사실
을 업데이트하여 "Scary\ 대신 "Large\로 읽은 다음 Update Shark를 누르십시오. 이렇게 하면show
경로로 돌아갑니다.마지막으로 Back to sharks를 누르면 업데이트된
색인
보기로 이동합니다.이제 애플리케이션의 기본 기능을 테스트했으므로 일부 유효성 검사 및 보안 검사를 추가하여 모든 것을 더 안전하게 만들 수 있습니다.
5단계 - 검증 추가
상어 응용 프로그램은 사용자의 입력을 받을 수 있지만 사용자가 사실을 추가하지 않고 상어를 만들려고 시도하거나 이미 데이터베이스에 있는 상어에 대한 항목을 만드는 경우를 상상해 보십시오. 모델에 유효성 검사를 추가하여 데이터가 데이터베이스에 입력되기 전에 데이터를 확인하는 메커니즘을 만들 수 있습니다. 애플리케이션의 로직은 해당 모델에 있으므로 거기에서 입력된 데이터의 유효성을 검사하는 것이 적절합니다.
이 자습서에서는 유효성 검사 테스트 작성을 다루지 않지만 Rails 설명서를 참조하여 테스트에 대해 자세히 알아볼 수 있습니다.
아직 서버를 중지하지 않은 경우 터미널에서
CTRL+C
를 눌러 지금 서버를 중지하십시오.shark.rb
모델 파일을 엽니다.- nano app/models/shark.rb
현재 이 파일은
Shark
클래스가ApplicationRecord
에서 상속되고, 이는 다시ActiveRecord::Base
에서 상속됨을 알려줍니다.class Shark < ApplicationRecord end
name
필드에 몇 가지 유효성 검사를 추가하여 필드가 채워지고 항목이 고유하여 중복 항목을 방지하는지 확인합니다.class Shark < ApplicationRecord validates :name, presence: true, uniqueness: true end
다음으로
facts
필드에 유효성 검사를 추가하여 이 필드도 채워졌는지 확인합니다.class Shark < ApplicationRecord validates :name, presence: true, uniqueness: true validates :facts, presence: true end
validates:facts,presence:true
코드 라인은 팩트의 고유성과 관련이 없습니다. 고유한 상어 항목과의 연관성을 확인합니다.완료되면 파일을 저장하고 닫습니다.
rails s
또는rails s --binding=your_server_ip
를 사용하여 서버를 다시 시작한 다음에서 애플리케이션의 루트로 이동합니다. http://localhost:3000
또는http://your_server_ip:3000
.New Shark 링크를 누릅니다. 양식에서 이름 필드에 "Great White\를 추가하고 Facts 필드에 "Big Teeth\를 추가한 다음 Create Shark를 누릅니다. 이 경우 경고 메시지가 나타납니다.
다른 유효성 검사를 확인하려면 Back to sharks를 클릭하여 홈페이지로 돌아간 다음 New Shark를 다시 한 번 누릅니다. 새 양식에서 Name 필드에 "Tiger Shark\를 입력하고 Facts는 비워둡니다. Create Shark를 누르면 다음과 같은 경고가 출력됩니다.
이러한 변경 사항으로 인해 애플리케이션은 데이터베이스에 저장된 데이터의 일관성을 보장하기 위해 몇 가지 유효성 검사를 수행합니다. 이제 애플리케이션 사용자에게 관심을 돌리고 애플리케이션 데이터를 수정할 수 있는 사람을 정의할 수 있습니다.
6단계 - 인증 추가
일부 유효성 검사를 수행하면 데이터베이스에 저장되는 데이터에 대해 어느 정도 보장할 수 있습니다. 그러나 사용자는 어떻습니까? 모든 사용자가 데이터베이스에 추가되는 것을 원하지 않으면 허용된 사용자만 상어를 추가할 수 있도록 몇 가지 인증 조치를 추가해야 합니다. 이렇게 하려면
http_basic_authenticate_with
메서드를 사용하여 사용자 인증을 위한 사용자 이름과 암호 조합을 만들 수 있습니다.devise
gem 작업을 포함하여 Rails로 사용자를 인증하는 방법에는 여러 가지가 있습니다. 그러나 지금은 애플리케이션 전체의 작업에 적용할 메서드를 애플리케이션 컨트롤러에 추가합니다. 이는 나중에 응용 프로그램에 더 많은 컨트롤러를 추가하는 경우에 유용합니다.CTRL+C
로 서버를 중지하십시오.ApplicationController
를 정의하는 파일을 엽니다.- nano app/controllers/application_controller.rb
내부에는 애플리케이션의 다른 컨트롤러가 상속하는
ApplicationController
클래스에 대한 정의가 있습니다.class ApplicationController < ActionController::Base end
사용자를 인증하려면
http_basic_authenticate_with
방법과 함께 하드코딩된 사용자 이름과 암호를 사용하십시오. 파일에 다음 코드를 추가합니다.class ApplicationController < ActionController::Base http_basic_authenticate_with name: 'sammy', password: 'shark', except: [:index, :show] end
여기에 사용자 이름과 암호를 제공하는 것 외에도 필요하지 않은 경로(
index
및show
)를 지정하여 인증을 제한했습니다. 이를 달성하는 또 다른 방법은only: [:create, :update, :destroy]
를 작성하는 것입니다. 이렇게 하면 모든 사용자가 모든 상어에 액세스하고 특정 상어에 대한 사실을 읽을 수 있습니다. 그러나 사이트 콘텐츠를 수정하는 경우 사용자는 액세스 권한이 있음을 증명해야 합니다.보다 강력한 설정에서는 이러한 방식으로 값을 하드코딩하는 것을 원하지 않지만 이 예제는 애플리케이션의 경로에 대한 인증을 포함할 수 있는 방법을 보여줍니다. Rails는 기본적으로 세션 데이터를 쿠키에 저장합니다. 지정된 작업에 대해 인증하면 동일한 세션에서 다시 인증할 필요가 없습니다.
편집이 끝나면
app/controllers/application_controller.rb
를 저장하고 닫습니다. 이제 실제 인증을 테스트할 수 있습니다.rails s
또는rails s --binding=your_server_ip
로 서버를 시작하고http:// localhost:3000
또는http://your_server_ip:3000
.랜딩 페이지에서 New Shark 버튼을 누릅니다. 이렇게 하면 다음 인증 창이 트리거됩니다.
사용자 이름
sammy
와 암호shark
를 입력하면app/controllers/application_controller.rb
에 추가한 조합입니다. 새로운 상어를 안전하게 생성할 수 있습니다.이제 데이터 유효성 검사 및 기본 인증 체계를 갖춘 작동하는 상어 응용 프로그램이 있습니다.
결론
이 자습서에서 생성한 Rails 애플리케이션은 추가 개발에 사용할 수 있는 출발점입니다. Rails 생태계를 탐색하는 데 관심이 있다면 프로젝트 문서를 시작하는 것이 좋습니다.
애플리케이션의 모델 및 경로를 구축하는 방법을 보여주는 Ruby on Rails 애플리케이션용 중첩 리소스 생성 방법을 읽어 프로젝트에 중첩 리소스를 추가하는 방법에 대해 자세히 알아볼 수도 있습니다.
또한 React Frontend로 Ruby on Rails 프로젝트를 설정하는 방법과 같은 프레임워크를 사용하여 프로젝트에 대해 보다 강력한 프런트엔드를 설정하는 방법을 탐색하고 싶을 수 있습니다. 이 작업을 수행하는 방법에 대한 지침을 제공합니다.
다른 데이터베이스 옵션을 탐색하려면 PostgreSQL 자습서를 확인하여 이 데이터베이스 작업에 대해 자세히 알아볼 수도 있습니다.