edge
더 많은 정보: rubyonrails.org에서 확인하세요: 더 많은 Ruby on Rails

레일스 커맨드 라인

이 가이드를 읽으면 다음을 알게 됩니다:

참고: 이 튜토리얼은 레일스 시작 가이드를 읽어 기본적인 레일스 지식이 있다고 가정합니다.

1 레일스 앱 생성

먼저, rails new 커맨드를 사용하여 간단한 레일스 애플리케이션을 생성해 보겠습니다.

이 애플리케이션을 사용하여 이 가이드에서 설명하는 모든 커맨드를 플레이하고 발견할 수 있습니다.

이미 레일스 젬이 설치되어 있지 않은 경우 gem install rails를 입력하여 설치할 수 있습니다.

1.1 rails new

rails new 커맨드에 전달하는 첫 번째 인자는 애플리케이션 이름입니다.

$ rails new my_app
     create
     create  README.md
     create  Rakefile
     create  config.ru
     create  .gitignore
     create  Gemfile
     create  app
     ...
     create  tmp/cache
     ...
        run  bundle install

레일스는 이렇게 작은 커맨드에 대해 엄청난 양의 작업을 설정합니다! 이제 우리는 필요한 모든 코드를 가지고 간단한 애플리케이션을 실행할 수 있는 전체 레일스 디렉토리 구조를 갖게 되었습니다.

일부 파일을 생성하지 않거나 일부 라이브러리를 건너뛰고 싶다면 rails new 커맨드에 다음 중 하나의 인자를 추가할 수 있습니다:

인자 설명
--skip-git git init, .gitignore 및 .gitattributes를 건너뛰기
--skip-docker Dockerfile, .dockerignore 및 bin/docker-entrypoint를 건너뛰기
--skip-keeps 소스 컨트롤 .keep 파일 건너뛰기
--skip-action-mailer Action Mailer 파일 건너뛰기
--skip-action-mailbox Action Mailbox 젬 건너뛰기
--skip-action-text Action Text 젬 건너뛰기
--skip-active-record Active Record 파일 건너뛰기
--skip-active-job Active Job 건너뛰기
--skip-active-storage Active Storage 파일 건너뛰기
--skip-action-cable Action Cable 파일 건너뛰기
--skip-asset-pipeline Asset Pipeline 건너뛰기
--skip-javascript JavaScript 파일 건너뛰기
--skip-hotwire Hotwire 통합 건너뛰기
--skip-jbuilder jbuilder 젬 건너뛰기
--skip-test 테스트 파일 건너뛰기
--skip-system-test 시스템 테스트 파일 건너뛰기
--skip-bootsnap bootsnap 젬 건너뛰기

이것은 rails new가 받아들이는 옵션 중 일부에 불과합니다. 전체 옵션 목록은 rails new --help를 입력하면 확인할 수 있습니다.

1.2 다른 데이터베이스 사전 구성

새로운 레일스 애플리케이션을 생성할 때, 애플리케이션이 사용할 데이터베이스 종류를 지정할 수 있습니다. 이렇게 하면 몇 분과 많은 타이핑을 절약할 수 있습니다.

--database=postgresql 옵션을 사용해보겠습니다:

$ rails new petstore --database=postgresql
      create
      create  app/controllers
      create  app/helpers
...

config/database.yml에 어떤 내용이 들어 있는지 확인해 보겠습니다:

# PostgreSQL. Versions 9.3 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On macOS with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem "pg"
#
default: &default
  adapter: postgresql
  encoding: unicode

  # For details on connection pooling, see Rails configuration guide
  # https://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: petstore_development
...

우리가 선택한 PostgreSQL에 해당하는 데이터베이스 구성을 생성했습니다.

2 커맨드 라인 기본 사항

레일스를 일상적으로 사용하는 데 절대적으로 필수적인 몇 가지 커맨드가 있습니다. 아마도 다음과 같은 순서로 사용할 것입니다:

  • bin/rails console
  • bin/rails server
  • bin/rails test
  • bin/rails generate
  • bin/rails db:migrate
  • bin/rails db:create
  • bin/rails routes
  • bin/rails dbconsole
  • rails new app_name

현재 디렉토리에 따라 종종 다르게 사용할 수 있는 레일스 커맨드 목록을 얻으려면 rails --help를 입력하면 됩니다. 각 커맨드에는 설명이 포함되어 있으며 필요한 항목을 찾을 수 있도록 도와줍니다.

$ rails --help
Usage:
  bin/rails COMMAND [options]

You must specify a command. The most common commands are:

  generate     Generate new code (short-cut alias: "g")
  console      Start the Rails console (short-cut alias: "c")
  server       Start the Rails server (short-cut alias: "s")
  ...

All commands can be run with -h (or --help) for more information.

In addition to those commands, there are:
about                               List versions of all Rails ...
assets:clean[keep]                  Remove old compiled assets
assets:clobber                      Remove compiled assets
assets:environment                  Load asset compile environment
assets:precompile                   Compile all the assets ...
...
db:fixtures:load                    Load fixtures into the ...
db:migrate                          Migrate the database ...
db:migrate:status                   Display status of migrations
db:rollback                         Roll the schema back to ...
db:schema:cache:clear               Clears a db/schema_cache.yml file
db:schema:cache:dump                Create a db/schema_cache.yml file
db:schema:dump                      Create a database schema file (either db/schema.rb or db/structure.sql ...
db:schema:load                      Load a database schema file (either db/schema.rb or db/structure.sql ...
db:seed                             Load the seed data ...
db:version                          Retrieve the current schema ...
...
restart                             Restart app by touching ...
tmp:create                          Create tmp directories ...

2.1 bin/rails server

bin/rails server 명령은 Rails와 함께 번들로 제공되는 Puma라는 웹 서버를 실행합니다. 웹 브라우저를 통해 애플리케이션에 접근하려는 경우에 사용합니다.

추가 작업 없이 bin/rails server를 실행하면 다음과 같이 새로운 Rails 앱이 실행됩니다:

$ cd my_app
$ bin/rails server
=> Booting Puma
=> Rails 7.0.0 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.1 (ruby 2.5.7-p206), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop

이 세 가지 명령만으로 3000번 포트에서 실행되는 Rails 서버를 만들었습니다. 브라우저에서 http://localhost:3000을 열면 기본적인 Rails 앱이 실행되는 것을 볼 수 있습니다.

"s"라는 별칭을 사용하여 서버를 시작할 수도 있습니다: bin/rails s.

-p 옵션을 사용하여 서버를 다른 포트에서 실행할 수 있습니다. -e 옵션을 사용하여 기본 개발 환경을 변경할 수 있습니다.

$ bin/rails server -e production -p 4000

-b 옵션은 Rails를 지정된 IP에 바인딩합니다. 기본값은 localhost입니다. -d 옵션을 전달하여 서버를 데몬으로 실행할 수도 있습니다.

2.2 bin/rails generate

bin/rails generate 명령은 템플릿을 사용하여 다양한 항목을 생성합니다. bin/rails generate만 실행하면 사용 가능한 생성기 목록이 표시됩니다:

생성기 명령을 호출하기 위해 "g"라는 별칭을 사용할 수도 있습니다: bin/rails g.

$ bin/rails generate
Usage:
  bin/rails generate GENERATOR [args] [options]

...
...

Please choose a generator below.

Rails:
  assets
  channel
  controller
  generator
  ...
  ...

생성기 젬을 통해 더 많은 생성기를 설치할 수 있으며, 플러그인의 일부로 생성기를 설치할 수도 있으며, 직접 생성기를 만들 수도 있습니다!

생성기를 사용하면 앱이 작동하는 데 필요한 보일러플레이트 코드(기본 코드)를 작성하는 데 많은 시간을 절약할 수 있습니다.

컨트롤러 생성기를 사용하여 직접 컨트롤러를 만들어 보겠습니다. 어떤 명령을 사용해야 할까요? 생성기에 물어보겠습니다:

모든 Rails 콘솔 유틸리티에는 도움말 텍스트가 있습니다. 대부분의 *nix 유틸리티와 마찬가지로 --help 또는 -h를 추가해 볼 수 있습니다. 예를 들어 bin/rails server --help와 같이 사용할 수 있습니다.

$ bin/rails generate controller
Usage:
  bin/rails generate controller NAME [action action] [options]

...
...

Description:
    ...

    To create a controller within a module, specify the controller name as a path like 'parent_module/controller_name'.

    ...

Example:
    `bin/rails generate controller CreditCards open debit credit close`

    Credit card controller with URLs like /credit_cards/debit.
        Controller: app/controllers/credit_cards_controller.rb
        Test:       test/controllers/credit_cards_controller_test.rb
        Views:      app/views/credit_cards/debit.html.erb [...]
        Helper:     app/helpers/credit_cards_helper.rb

컨트롤러 생성기는 generate controller ControllerName action1 action2 형식의 매개변수를 기대합니다. hello라는 액션을 가진 Greetings 컨트롤러를 만들어 보겠습니다. 이 액션은 우리에게 좋은 메시지를 전달할 것입니다.

$ bin/rails generate controller Greetings hello
     create  app/controllers/greetings_controller.rb
      route  get 'greetings/hello'
     invoke  erb
     create    app/views/greetings
     create    app/views/greetings/hello.html.erb
     invoke  test_unit
     create    test/controllers/greetings_controller_test.rb
     invoke  helper
     create    app/helpers/greetings_helper.rb
     invoke    test_unit

이것이 생성한 모든 것입니다. 애플리케이션에 일련의 디렉토리가 있도록 하고, 컨트롤러 파일, 뷰 파일, 기능 테스트 파일, 뷰를 위한 헬퍼, JavaScript 파일 및 스타일시트 파일을 생성했습니다.

컨트롤러를 확인하고 약간 수정해 보겠습니다(app/controllers/greetings_controller.rb):

class GreetingsController < ApplicationController
  def hello
    @message = "Hello, how are you today?"
  end
end

그런 다음 메시지를 표시하기 위해 뷰를 수정해 보겠습니다(app/views/greetings/hello.html.erb):

<h1>A Greeting for You!</h1>
<p><%= @message %></p>

bin/rails server를 사용하여 서버를 실행해 보세요.

$ bin/rails server
=> Booting Puma...

URL은 http://localhost:3000/greetings/hello입니다.

일반적인 Rails 애플리케이션의 경우 URL은 일반적으로 http://(호스트)/(컨트롤러)/(액션)과 같은 패턴을 따르며, http://(호스트)/(컨트롤러)와 같은 URL은 해당 컨트롤러의 index 액션에 해당합니다.

Rails에는 데이터 모델을 위한 생성기도 함께 제공됩니다.

$ bin/rails generate model
Usage:
  bin/rails generate model NAME [field[:type][:index] field[:type][:index]] [options]

...

ActiveRecord options:
      [--migration], [--no-migration]        # Indicates when to generate migration
                                             # Default: true

...

Description:
    Generates a new model. Pass the model name, either CamelCased or
    under_scored, and an optional list of attribute pairs as arguments.

...

type 매개변수에 대한 사용 가능한 필드 유형 목록은 SchemaStatements 모듈의 add_column 메서드에 대한 API 문서를 참조하십시오. index 매개변수는 해당 열에 대한 인덱스를 생성합니다. 그러나 모델을 직접 생성하는 대신 (나중에 할 것입니다), 스캐폴드를 설정해 봅시다. Rails에서의 스캐폴드는 모델, 해당 모델에 대한 데이터베이스 마이그레이션, 조작을 위한 컨트롤러, 데이터를 보고 조작하기 위한 뷰 및 위의 각각에 대한 테스트 스위트로 이루어진 완전한 세트입니다.

우리는 "HighScore"라는 간단한 리소스를 설정할 것입니다. 이 리소스는 우리가 플레이하는 비디오 게임의 최고 점수를 추적할 것입니다.

$ bin/rails generate scaffold HighScore game:string score:integer
    invoke  active_record
    create    db/migrate/20190416145729_create_high_scores.rb
    create    app/models/high_score.rb
    invoke    test_unit
    create      test/models/high_score_test.rb
    create      test/fixtures/high_scores.yml
    invoke  resource_route
     route    resources :high_scores
    invoke  scaffold_controller
    create    app/controllers/high_scores_controller.rb
    invoke    erb
    create      app/views/high_scores
    create      app/views/high_scores/index.html.erb
    create      app/views/high_scores/edit.html.erb
    create      app/views/high_scores/show.html.erb
    create      app/views/high_scores/new.html.erb
    create      app/views/high_scores/_form.html.erb
    invoke    test_unit
    create      test/controllers/high_scores_controller_test.rb
    create      test/system/high_scores_test.rb
    invoke    helper
    create      app/helpers/high_scores_helper.rb
    invoke      test_unit
    invoke    jbuilder
    create      app/views/high_scores/index.json.jbuilder
    create      app/views/high_scores/show.json.jbuilder
    create      app/views/high_scores/_high_score.json.jbuilder

이 생성기는 HighScore에 대한 모델, 뷰, 컨트롤러, 리소스 라우트 및 데이터베이스 마이그레이션(high_scores 테이블을 생성)을 생성합니다. 그리고 그에 대한 테스트도 추가됩니다.

마이그레이션은 데이터베이스의 스키마를 수정하기 위해 몇 줄의 루비 코드 (위의 출력에서 20190416145729_create_high_scores.rb 파일)를 실행하는 것을 요구합니다. 어떤 데이터베이스인가요? bin/rails db:migrate 명령을 실행할 때 Rails가 생성하는 SQLite3 데이터베이스입니다. 이 명령에 대해 더 자세히 이야기하겠습니다.

$ bin/rails db:migrate
==  CreateHighScores: migrating ===============================================
-- create_table(:high_scores)
   -> 0.0017s
==  CreateHighScores: migrated (0.0019s) ======================================

유닛 테스트에 대해 이야기해 봅시다. 유닛 테스트는 코드를 테스트하고 단언을 수행하는 코드입니다. 유닛 테스트에서는 코드의 일부분, 예를 들어 모델의 메소드를 가져와서 입력과 출력을 테스트합니다. 유닛 테스트는 여러분의 친구입니다. 코드를 유닛 테스트하는 것이 여러분의 삶의 질이 크게 향상될 것이라는 사실을 조금 더 빨리 받아들이는 것이 좋습니다. 정말로요. 자세한 내용은 테스팅 가이드를 참조하세요.

Rails가 생성한 인터페이스를 살펴보겠습니다.

$ bin/rails server

브라우저에서 http://localhost:3000/high_scores를 열어보세요. 이제 새로운 최고 점수 (Space Invaders에서 55,160점!)를 생성할 수 있습니다.

2.3 bin/rails console

console 명령은 명령줄에서 Rails 애플리케이션과 상호작용할 수 있게 해줍니다. 내부적으로 bin/rails console은 IRB를 사용하므로, 이전에 사용한 적이 있다면 익숙할 것입니다. 이는 코드로 빠르게 아이디어를 테스트하고 웹사이트에 영향을 주지 않고 서버 측에서 데이터를 변경하는 데 유용합니다.

콘솔을 호출하기 위해 "c" 별칭을 사용할 수도 있습니다: bin/rails c.

console 명령이 작동해야 하는 환경을 지정할 수 있습니다.

$ bin/rails console -e staging

데이터를 변경하지 않고 코드를 테스트하려면 bin/rails console --sandbox를 사용할 수 있습니다.

$ bin/rails console --sandbox
Loading development environment in sandbox (Rails 7.1.0)
Any modifications you make will be rolled back on exit
irb(main):001:0>

2.3.1 apphelper 객체

bin/rails console 내에서 apphelper 인스턴스에 액세스할 수 있습니다.

app 메소드를 사용하면 이름이 지정된 라우트 헬퍼에 액세스하거나 요청을 수행할 수 있습니다.

irb> app.root_path
=> "/"

irb> app.get _
Started GET "/" for 127.0.0.1 at 2014-06-19 10:41:57 -0300
...

helper 메소드를 사용하면 Rails 및 애플리케이션의 헬퍼에 액세스할 수 있습니다.

irb> helper.time_ago_in_words 30.days.ago
=> "about 1 month"

irb> helper.my_custom_helper
=> "my custom helper"

2.4 bin/rails dbconsole

bin/rails dbconsole은 사용 중인 데이터베이스를 파악하고 해당 데이터베이스와 함께 사용하는 명령줄 인터페이스로 이동시킵니다 (또한 해당 명령줄 인터페이스에 제공해야 할 명령줄 매개변수도 파악합니다!). MySQL (MariaDB 포함), PostgreSQL 및 SQLite3을 지원합니다.

dbconsole을 호출하기 위해 "db" 별칭을 사용할 수도 있습니다: bin/rails db.

여러 개의 데이터베이스를 사용하는 경우, bin/rails dbconsole은 기본적으로 기본 데이터베이스에 연결합니다. --database 또는 --db를 사용하여 연결할 데이터베이스를 지정할 수 있습니다.

$ bin/rails dbconsole --database=animals

2.5 bin/rails runner

runner는 Rails의 환경에서 Ruby 코드를 비대화식으로 실행합니다. 예를 들어:

$ bin/rails runner "Model.long_running_method"

runner를 호출하기 위해 "r" 별칭을 사용할 수도 있습니다: bin/rails r.

runner 명령이 작동해야 하는 환경을 -e 스위치를 사용하여 지정할 수 있습니다.

$ bin/rails runner -e staging "Model.long_running_method"

실행 파일(runner)을 사용하여 파일에 작성된 루비 코드를 실행할 수도 있습니다.

$ bin/rails runner lib/code_to_be_run.rb

2.6 bin/rails destroy

destroygenerate의 반대 개념으로 생각할 수 있습니다. generate가 무엇을 했는지 알아내고 그것을 취소합니다.

destroy 명령을 호출하기 위해 별칭 "d"를 사용할 수도 있습니다: bin/rails d.

$ bin/rails generate model Oops
      invoke  active_record
      create    db/migrate/20120528062523_create_oops.rb
      create    app/models/oops.rb
      invoke    test_unit
      create      test/models/oops_test.rb
      create      test/fixtures/oops.yml
$ bin/rails destroy model Oops
      invoke  active_record
      remove    db/migrate/20120528062523_create_oops.rb
      remove    app/models/oops.rb
      invoke    test_unit
      remove      test/models/oops_test.rb
      remove      test/fixtures/oops.yml

2.7 bin/rails about

bin/rails about은 루비, 루비젬, 레일스, 레일스 하위 구성 요소, 애플리케이션 폴더, 현재 레일스 환경 이름, 앱의 데이터베이스 어댑터 및 스키마 버전에 대한 버전 번호 정보를 제공합니다. 도움을 요청하거나 보안 패치가 영향을 미칠 수 있는지 확인하거나 기존 레일스 설치에 대한 통계를 얻을 때 유용합니다.

$ bin/rails about
About your application's environment
Rails version             7.0.0
Ruby version              2.7.0 (x86_64-linux)
RubyGems version          2.7.3
Rack version              2.0.4
JavaScript Runtime        Node.js (V8)
Middleware:               Rack::Sendfile, ActionDispatch::Static, ActionDispatch::Executor, ActiveSupport::Cache::Strategy::LocalCache::Middleware, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, ActionDispatch::RemoteIp, Sprockets::Rails::QuietAssets, Rails::Rack::Logger, ActionDispatch::ShowExceptions, WebConsole::Middleware, ActionDispatch::DebugExceptions, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, Rack::Head, Rack::ConditionalGet, Rack::ETag
Application root          /home/foobar/my_app
Environment               development
Database adapter          sqlite3
Database schema version   20180205173523

2.8 bin/rails assets:

bin/rails assets:precompile을 사용하여 app/assets의 에셋을 미리 컴파일하고, bin/rails assets:clean을 사용하여 이전에 컴파일된 에셋을 제거할 수 있습니다. assets:clean 명령은 새로운 에셋이 빌드되는 동안 여전히 이전 에셋에 링크되어 있는 롤링 배포를 가능하게 합니다.

public/assets를 완전히 지우려면 bin/rails assets:clobber를 사용할 수 있습니다.

2.9 bin/rails db:

db: 레일스 네임스페이스의 가장 일반적인 명령은 migratecreate입니다. 모든 마이그레이션 레일스 명령(up, down, redo, reset)을 시도해 보는 것이 좋습니다. bin/rails db:version은 문제 해결 시 현재 데이터베이스 버전을 알려주는 데 유용합니다.

마이그레이션에 대한 자세한 정보는 마이그레이션 가이드에서 찾을 수 있습니다.

2.10 bin/rails notes

bin/rails notes는 특정 키워드로 시작하는 주석을 코드에서 검색합니다. 사용법에 대한 정보는 bin/rails notes --help를 참조할 수 있습니다.

기본적으로 .builder, .rb, .rake, .yml, .yaml, .ruby, .css, .js, .erb 확장자를 가진 파일에서 app, config, db, lib, test 디렉토리에서 FIXME, OPTIMIZE, TODO 주석을 검색합니다.

$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] any other way to do this?
  * [132] [FIXME] high priority for next deploy

lib/school.rb:
  * [ 13] [OPTIMIZE] refactor this code to make it faster
  * [ 17] [FIXME]

2.10.1 주석

--annotations 인수를 사용하여 특정 주석을 전달할 수 있습니다. 기본적으로 FIXME, OPTIMIZE, TODO를 검색합니다. 주석은 대소문자를 구분한다는 점에 유의하세요.

$ bin/rails notes --annotations FIXME RELEASE
app/controllers/admin/users_controller.rb:
  * [101] [RELEASE] We need to look at this before next release
  * [132] [FIXME] high priority for next deploy

lib/school.rb:
  * [ 17] [FIXME]

2.10.2 태그

config.annotations.register_tags를 사용하여 검색할 기본 태그를 추가할 수 있습니다. 태그 목록을 받습니다.

config.annotations.register_tags("DEPRECATEME", "TESTME")
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] do A/B testing on this
  * [ 42] [TESTME] this needs more functional tests
  * [132] [DEPRECATEME] ensure this method is deprecated in next release

2.10.3 디렉토리

config.annotations.register_directories를 사용하여 검색할 기본 디렉토리를 추가할 수 있습니다. 디렉토리 이름 목록을 받습니다.

config.annotations.register_directories("spec", "vendor")
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] any other way to do this?
  * [132] [FIXME] high priority for next deploy

lib/school.rb:
  * [ 13] [OPTIMIZE] Refactor this code to make it faster
  * [ 17] [FIXME]

spec/models/user_spec.rb:
  * [122] [TODO] Verify the user that has a subscription works

vendor/tools.rb:
  * [ 56] [TODO] Get rid of this dependency

2.10.4 확장자

config.annotations.register_extensions를 사용하여 검색할 기본 파일 확장자를 추가할 수 있습니다. 확장자 목록과 해당 정규식을 받습니다.

config.annotations.register_extensions("scss", "sass") { |annotation| /\/\/\s*(#{annotation}):?\s*(.*)$/ }
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] any other way to do this?
  * [132] [FIXME] high priority for next deploy

app/assets/stylesheets/application.css.sass:
  * [ 34] [TODO] Use pseudo element for this class

app/assets/stylesheets/application.css.scss:
  * [  1] [TODO] Split into multiple components

lib/school.rb:
  * [ 13] [OPTIMIZE] Refactor this code to make it faster
  * [ 17] [FIXME]

spec/models/user_spec.rb:
  * [122] [TODO] Verify the user that has a subscription works

vendor/tools.rb:
  * [ 56] [TODO] Get rid of this dependency

2.11 bin/rails routes

bin/rails routes는 정의된 모든 라우트를 나열하며, 앱의 라우팅 문제를 추적하거나 익숙해지려는 앱의 URL에 대한 개요를 제공하는 데 유용합니다.

2.12 bin/rails test

Rails에서의 유닛 테스트에 대한 좋은 설명은 Rails 애플리케이션 테스트 가이드에서 찾을 수 있습니다.

Rails에는 minitest라는 테스트 프레임워크가 함께 제공됩니다. Rails의 안정성은 테스트의 사용에 기인합니다. test: 네임스페이스에서 사용 가능한 명령은 작성할 것으로 희망하는 다양한 테스트를 실행하는 데 도움이 됩니다.

2.13 bin/rails tmp:

Rails.root/tmp 디렉토리는 *nix /tmp 디렉토리와 마찬가지로 프로세스 ID 파일 및 캐시된 액션과 같은 임시 파일을 보관하는 곳입니다.

tmp: 네임스페이스 명령은 Rails.root/tmp 디렉토리를 지우고 생성하는 데 도움이 됩니다:

  • bin/rails tmp:cache:cleartmp/cache를 지웁니다.
  • bin/rails tmp:sockets:cleartmp/sockets를 지웁니다.
  • bin/rails tmp:screenshots:cleartmp/screenshots를 지웁니다.
  • bin/rails tmp:clear는 모든 캐시, 소켓 및 스크린샷 파일을 지웁니다.
  • bin/rails tmp:create는 캐시, 소켓 및 PID를 위한 tmp 디렉토리를 생성합니다.

2.14 기타

  • bin/rails initializers는 Rails에서 호출되는 순서대로 정의된 모든 초기화 파일을 출력합니다.
  • bin/rails middleware는 앱에서 활성화된 Rack 미들웨어 스택을 나열합니다.
  • bin/rails stats는 코드에 대한 통계를 살펴보는 데 유용하며, KLOC(천 줄 코드) 및 코드 대 테스트 비율과 같은 정보를 표시합니다.
  • bin/rails secret는 세션 비밀키로 사용할 의사 랜덤 키를 제공합니다.
  • bin/rails time:zones:all은 Rails가 알고 있는 모든 시간대를 나열합니다.

2.15 사용자 정의 Rake 작업

사용자 정의 Rake 작업은 .rake 확장자를 가지며 Rails.root/lib/tasks에 위치합니다. bin/rails generate task 명령으로 이러한 사용자 정의 Rake 작업을 생성할 수 있습니다.

desc "나의 멋진 작업에 대한 간단하지만 포괄적인 설명입니다"
task task_name: [:prerequisite_task, :another_task_we_depend_on] do
  # 여기에 마법을 부릅니다
  # 유효한 Ruby 코드는 모두 허용됩니다
end

사용자 정의 Rake 작업에 인수를 전달하려면:

task :task_name, [:arg_1] => [:prerequisite_1, :prerequisite_2] do |task, args|
  argument_1 = args.arg_1
end

네임스페이스에 작업을 그룹화할 수 있습니다:

namespace :db do
  desc "이 작업은 아무것도 하지 않습니다"
  task :nothing do
    # 정말로 아무것도 하지 않습니다
  end
end

작업을 호출하는 방법은 다음과 같습니다:

$ bin/rails task_name
$ bin/rails "task_name[value 1]" # 인수 문자열 전체를 따옴표로 묶어야 합니다
$ bin/rails "task_name[value 1,value2,value3]" # 여러 인수는 쉼표로 구분합니다
$ bin/rails db:nothing

애플리케이션 모델과 상호 작용하거나 데이터베이스 쿼리를 수행해야 하는 경우 작업은 environment 작업에 의존해야 합니다. 이 작업은 애플리케이션 코드를 로드합니다.

task task_that_requires_app_code: [:environment] do
  User.create!
end

피드백

이 가이드의 품질을 개선하는 데 도움을 주시기를 권장합니다.

오타나 사실적인 오류를 발견하면 기여해주십시오. 시작하려면 문서 기여 섹션을 읽어보세요.

불완전한 내용이나 최신 정보가 아닌 내용을 발견할 수도 있습니다. 주요한 부분에 누락된 문서를 추가해주세요. Edge 가이드에서 이미 문제가 해결되었는지 확인하세요. 스타일과 규칙은 Ruby on Rails 가이드 지침을 확인하세요.

수정할 내용을 발견했지만 직접 수정할 수 없는 경우 이슈를 열어주세요.

마지막으로, Ruby on Rails 문서에 관한 모든 토론은 공식 Ruby on Rails 포럼에서 환영합니다.