edge
เพิ่มเติมที่ rubyonrails.org: เพิ่มเติมเกี่ยวกับ Ruby on Rails

คำสั่ง Rails Command Line

หลังจากอ่านเอกสารนี้คุณจะรู้:

หมายเหตุ: คู่มือนี้ถือว่าคุณมีความรู้พื้นฐานเกี่ยวกับ Rails จากการอ่านคู่มือ เริ่มต้นใช้งาน Rails

1 การสร้างแอปพลิเคชัน Rails

ก่อนอื่นเรามาสร้างแอปพลิเคชัน Rails ง่ายๆ โดยใช้คำสั่ง rails new

เราจะใช้แอปพลิเคชันนี้เพื่อทดลองและค้นพบคำสั่งทั้งหมดที่อธิบายในคู่มือนี้

ข้อมูล: หากคุณยังไม่มี gem rails คุณสามารถติดตั้งได้โดยพิมพ์ 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 จะตั้งค่าสิ่งที่ดูเหมือนจะมีจำนวนมากสำหรับคำสั่งที่เล็กน้อยเช่นนี้! เราได้โครงสร้างไดเรกทอรี Rails ทั้งหมดตอนนี้พร้อมโค้ดที่เราต้องการในการเรียกใช้แอปพลิเคชันง่ายๆ

หากคุณต้องการข้ามการสร้างไฟล์บางส่วนหรือข้ามไลบรารีบางส่วนคุณสามารถเพิ่มอาร์กิวเมนต์ต่อไปนี้ในคำสั่ง rails new ของคุณ:

อาร์กิวเมนต์ คำอธิบาย
--skip-git ข้าม git init, .gitignore และ .gitattributes
--skip-docker ข้าม Dockerfile, .dockerignore และ bin/docker-entrypoint
--skip-keeps ข้ามไฟล์ควบคุมแหล่งที่เก็บข้อมูล
--skip-action-mailer ข้ามไฟล์ Action Mailer
--skip-action-mailbox ข้าม Action Mailbox gem
--skip-action-text ข้าม Action Text gem
--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 gem
--skip-test ข้ามไฟล์ทดสอบ
--skip-system-test ข้ามไฟล์ทดสอบระบบ
--skip-bootsnap ข้าม bootsnap gem

นี่เป็นเพียงบางตัวเลือกที่ rails new ยอมรับ สำหรับรายการเต็มของตัวเลือก พิมพ์ rails new --help

1.2 กำหนดค่าฐานข้อมูลที่แตกต่างกันล่วงหน้า

เมื่อสร้างแอปพลิเคชัน Rails ใหม่ คุณสามารถระบุว่าแอปพลิเคชันของคุณจะใช้ฐานข้อมูลชนิดใด สิ่งนี้จะช่วยประหยัดเวลาสักหน่อยและแน่นอนจะประหยัดการพิมพ์

มาดูว่าตัวเลือก --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 พื้นฐานของคำสั่งบรรทัดคำสั่ง

มีคำสั่งบางอย่างที่สำคัญมากสำหรับการใช้งานประจำวันของคุณใน Rails ตามลำดับของความถี่ที่คุณจะน่าจะใช้:

  • 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 ที่มีอยู่ ซึ่งจะขึ้นอยู่กับไดเรกทอรีปัจจุบันของคุณ โดยพิมพ์ rails --help แต่ละคำสั่งมีคำอธิบายและควรช่วยคุณค้นหาสิ่งที่คุณต้องการ

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

คุณต้องระบุคำสั่ง คำสั่งที่ใช้บ่อยที่สุดคือ:

  generate     สร้างโค้ดใหม่ (ตัวย่อสั้น: "g")
  console      เริ่มคอนโซล Rails (ตัวย่อสั้น: "c")
  server       เริ่มเซิร์ฟเวอร์ Rails (ตัวย่อสั้น: "s")
  ...

คุณสามารถรับรายการคำสั่ง rails ที่มีอยู่ ซึ่งจะขึ้นอยู่กับไดเรกทอรีปัจจุบันของคุณ โดยพิมพ์ `rails --help` แต่ละคำสั่งมีคำอธิบายและควรช่วยคุณค้นหาสิ่งที่คุณต้องการ

```bash
$ 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 จะเปิดเซิร์ฟเวอร์เว็บชื่อ Puma ซึ่งมาพร้อมกับ Rails คุณจะใช้คำสั่งนี้เมื่อต้องการเข้าถึงแอปพลิเคชันของคุณผ่านเบราว์เซอร์

โดยไม่ต้องทำอะไรเพิ่มเติม 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

ด้วยเพียงสามคำสั่งเราก็สร้างเซิร์ฟเวอร์ Rails ที่ฟังก์ชันในพอร์ต 3000 ได้แล้ว ไปที่เบราว์เซอร์ของคุณและเปิด 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
  ...
  ...

หมายเหตุ: คุณสามารถติดตั้งตัวสร้างเพิ่มเติมผ่าน generator gems, ส่วนของปลั๊กอินที่คุณติดตั้งแน่นอน และคุณยังสามารถสร้างตัวสร้างของคุณเองได้!

การใช้ตัวสร้างจะช่วยประหยัดเวลาให้คุณโดยการเขียน โค้ดพื้นฐาน โค้ดที่จำเป็นสำหรับแอปพลิเคชันให้ทำงาน ให้เราสร้างคอนโทรลเลอร์ของเราเองด้วยเครื่องมือสร้างคอนโทรลเลอร์ แต่คำสั่งที่เราควรใช้คืออะไร? เรามาถามเครื่องมือสร้างคอนโทรลเลอร์:

โปรแกรมย่อยของ Rails ทั้งหมดมีข้อความคำแนะนำ อย่างเช่นเครื่องมือ *nix ส่วนใหญ่ คุณสามารถลองเพิ่ม --help หรือ -h ที่ท้าย ตัวอย่างเช่น bin/rails server --help.

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

...
...

Description:
    ...

    เพื่อสร้างคอนโทรลเลอร์ภายในโมดูล ให้ระบุชื่อคอนโทรลเลอร์เป็นเส้นทางเช่น 'parent_module/controller_name'.

    ...

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

    สร้างคอนโทรลเลอร์บัตรเครดิตที่มี URL เช่น /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 ชื่อคอนโทรลเลอร์ การกระทำ1 การกระทำ2. เรามาสร้างคอนโทรลเลอร์ Greetings พร้อมการกระทำ hello ซึ่งจะพูดคำที่ดีต่อเราเอง

$ 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 = "สวัสดีครับ คุณเป็นอย่างไรบ้างในวันนี้?"
  end
end

แล้วมาดูวิว เพื่อแสดงข้อความของเรา (ใน app/views/greetings/hello.html.erb):

<h1>คำทักทายสำหรับคุณ!</h1>
<p><%= @message %></p>

เปิดเซิร์ฟเวอร์ของคุณโดยใช้ bin/rails server.

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

URL จะเป็น http://localhost:3000/greetings/hello.

ในแอปพลิเคชัน Rails ธรรมดา ที่มีเพียงแอปพลิเคชันเดียว URL ของคุณจะมีรูปแบบเป็น http://(โฮสต์)/(คอนโทรลเลอร์)/(การกระทำ) และ URL เช่น http://(โฮสต์)/(คอนโทรลเลอร์) จะเข้าถึงการกระทำ index ของคอนโทรลเลอร์นั้น Rails มาพร้อมกับเครื่องมือสร้างโมเดลข้อมูลด้วย

$ bin/rails generate model
การใช้งาน:
  bin/rails generate model NAME [field[:type][:index] field[:type][:index]] [options]

...

ตัวเลือก ActiveRecord:
      [--migration], [--no-migration]        # ระบุเมื่อต้องการสร้าง migration
                                             # ค่าเริ่มต้น: true

...

คำอธิบาย:
    สร้างโมเดลใหม่ ระบุชื่อโมเดล ทั้งแบบ CamelCased หรือ under_scored และรายการคู่ค่าแอตทริบิวต์เพิ่มเติมเป็นอาร์กิวเมนต์

...

หมายเหตุ: สำหรับรายการประเภทฟิลด์ที่ใช้ในพารามิเตอร์ type ดูได้ที่ เอกสาร API สำหรับเมธอด add_column ในโมดูล SchemaStatements พารามิเตอร์ index จะสร้างดัชนีที่เกี่ยวข้องสำหรับคอลัมน์

แต่แทนที่จะสร้างโมเดลโดยตรง (ซึ่งเราจะทำในภายหลัง) เราจะติดตั้ง scaffold แทน สคริปต์ scaffold ใน 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

เครื่องมือสร้างโมเดลสร้างโมเดล มุมมอง คอนโทรลเลอร์ เส้นทางทรัพยากร และการเปลี่ยนแปลงฐานข้อมูล (ซึ่งสร้างตาราง high_scores) สำหรับ HighScore และเพิ่มการทดสอบสำหรับสิ่งเหล่านั้น

การเปลี่ยนแปลงฐานข้อมูลต้องการให้เรา migrate หรือเรียกใช้โค้ด Ruby (ไฟล์ 20190416145729_create_high_scores.rb จากผลลัพธ์ด้านบน) เพื่อปรับเปลี่ยนโครงสร้างของฐานข้อมูลของเรา ฐานข้อมูลใด? ฐานข้อมูล SQLite3 ที่ Rails จะสร้างให้เราเมื่อเราเรียกใช้คำสั่ง bin/rails db:migrate เราจะพูดถึงคำสั่งนี้มากขึ้นในส่วนถัดไป bash $ bin/rails db:migrate == CreateHighScores: กำลังทำการโยกย้าย =============================================== -- create_table(:high_scores) -> 0.0017s == CreateHighScores: โยกย้ายเสร็จสิ้น (0.0019s) ======================================

เรามาพูดถึงการทดสอบหน่วยกันบ้าง การทดสอบหน่วยคือการเขียนโค้ดที่ทดสอบและตรวจสอบโค้ดอื่น ๆ การทดสอบหน่วยเป็นเพื่อนของคุณ คุณจะมีคุณภาพชีวิตที่ดีขึ้นอย่างมากเมื่อคุณทดสอบหน่วยโค้ดของคุณ จริงจัง โปรดเยี่ยมชม คู่มือการทดสอบ เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการทดสอบหน่วย

มาดูอินเตอร์เฟสที่ Rails สร้างขึ้นให้เรา

$ bin/rails server

ไปที่เบราว์เซอร์ของคุณและเปิด http://localhost:3000/high_scores เราสามารถสร้างคะแนนสูงใหม่ได้แล้ว (55,160 บน Space Invaders!)

2.3 bin/rails console

คำสั่ง console ช่วยให้คุณสามารถแสดงผลแอปพลิเคชัน Rails ของคุณจาก command line ได้ ในด้านล่าง 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)
การปรับเปลี่ยนใด ๆ ที่คุณทำจะถูกยกเลิกเมื่อออก
irb(main):001:0>

2.3.1 อ็อบเจ็กต์ app และ helper

ภายใน bin/rails console คุณสามารถเข้าถึงอ็อบเจ็กต์ app และ helper ได้

ด้วยเมธอด 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 และ helper ของแอปพลิเคชันของคุณได้

irb> helper.time_ago_in_words 30.days.ago
=> "ประมาณ 1 เดือน"

irb> helper.my_custom_helper
=> "helper ที่กำหนดเอง"

2.4 bin/rails dbconsole

bin/rails dbconsole จะตรวจสอบว่าคุณใช้ฐานข้อมูลชนิดใดและเปิดให้คุณเข้าสู่อินเตอร์เฟซคอมมานด์ไลน์ที่คุณใช้กับฐานข้อมูลนั้น (และกำหนดพารามิเตอร์สำหรับคอมมานด์ไลน์ด้วยด้วย) รองรับ MySQL (รวมถึง MariaDB) PostgreSQL และ SQLite3

คุณยังสามารถใช้ชื่อย่อ "db" เพื่อเรียกใช้ dbconsole: bin/rails db.

หากคุณใช้ฐานข้อมูลหลายรายการ bin/rails dbconsole จะเชื่อมต่อกับฐานข้อมูลหลักโดยค่าเริ่มต้น คุณสามารถระบุฐานข้อมูลที่ต้องการเชื่อมต่อโดยใช้ --database หรือ --db:

$ bin/rails dbconsole --database=animals

2.5 bin/rails runner

runner ใช้ในการเรียกใช้โค้ด Ruby ในรูปแบบที่ไม่ต้องมีการตอบสนองจากผู้ใช้ ตัวอย่างเช่น:

$ bin/rails runner "Model.long_running_method"

คุณยังสามารถใช้ชื่อย่อ "r" เพื่อเรียกใช้ runner: bin/rails r.

คุณสามารถระบุสภาพแวดล้อมที่ runner ควรทำงานในโดยใช้สวิตช์ -e.

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

คุณยังสามารถเรียกใช้โค้ด Ruby ที่เขียนไว้ในไฟล์ด้วย runner

$ bin/rails runner lib/code_to_be_run.rb

2.6 bin/rails destroy

คิดว่า destroy เป็นการย้อนกลับของ generate มันจะหาว่า generate ทำอะไรและยกเลิกมัน

คุณยังสามารถใช้ชื่อย่อ "d" เพื่อเรียกใช้คำสั่ง destroy: 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 ให้ข้อมูลเกี่ยวกับเลขเวอร์ชันสำหรับ Ruby, RubyGems, Rails, ส่วนประกอบย่อยของ Rails, โฟลเดอร์ของแอปพลิเคชันของคุณ, ชื่อสภาพแวดล้อม Rails ปัจจุบัน, อะแดปเตอร์ฐานข้อมูลของแอปพลิเคชันของคุณ และเวอร์ชันสกีมา มันเป็นประโยชน์เมื่อคุณต้องการขอความช่วยเหลือ ตรวจสอบว่าแพทช์ความปลอดภัยอาจมีผลต่อคุณ หรือเมื่อคุณต้องการสถิติบางอย่างสำหรับการติดตั้ง Rails ที่มีอยู่แล้ว bash $ bin/rails about เกี่ยวกับสภาพแวดล้อมของแอปพลิเคชันของคุณ เวอร์ชัน Rails 7.0.0 เวอร์ชัน Ruby 2.7.0 (x86_64-linux) เวอร์ชัน RubyGems 2.7.3 เวอร์ชัน Rack 2.0.4 เวลาการเรียกใช้งาน JavaScript 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 สภาพแวดล้อม การพัฒนา Database adapter sqlite3 เวอร์ชัน Database schema 20180205173523

2.8 bin/rails assets:

คุณสามารถคอมไพล์แอสเซ็ตใน app/assets โดยใช้ bin/rails assets:precompile และลบแอสเซ็ตที่คอมไพล์เก่าออกโดยใช้ bin/rails assets:clean คำสั่ง assets:clean ช่วยให้สามารถทำการเปลี่ยนแปลงแอสเซ็ตในระหว่างการเปิดใช้งานได้ โดยที่ยังมีลิงก์ไปยังแอสเซ็ตเก่าในขณะที่แอสเซ็ตใหม่กำลังถูกสร้างขึ้น

หากคุณต้องการล้าง public/assets ให้สมบูรณ์ คุณสามารถใช้ bin/rails assets:clobber ได้

2.9 bin/rails db:

คำสั่งที่ใช้บ่อยที่สุดในเนมสเปซ db: ของ Rails คือ migrate และ create และคุณจะได้ประโยชน์จากการลองใช้คำสั่งการเปลี่ยนแปลงฐานข้อมูลทั้งหมด (up, down, redo, reset) bin/rails db:version มีประโยชน์ในกรณีที่ต้องการแก้ปัญหา โดยบอกเวอร์ชันปัจจุบันของฐานข้อมูล

ข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลงฐานข้อมูลสามารถหาได้ในคู่มือ การเปลี่ยนแปลง

2.10 bin/rails notes

bin/rails notes ค้นหาความคิดเห็นที่เริ่มต้นด้วยคำสำคัญที่ระบุ เราสามารถอ้างอิงไปยัง bin/rails notes --help เพื่อดูข้อมูลเกี่ยวกับวิธีการใช้งาน

โดยค่าเริ่มต้น มันจะค้นหาในไดเรกทอรี app, config, db, lib, และ test สำหรับคำอธิบายที่เริ่มต้นด้วย FIXME, OPTIMIZE, และ TODO ในไฟล์ที่มีนามสกุล .builder, .rb, .rake, .yml, .yaml, .ruby, .css, .js, และ .erb

$ 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 โปรดทราบว่าการอนุมานเป็นตัวพิมพ์ใหญ่เล็กได้ ```bash $ bin/rails notes --annotations FIXME RELEASE app/controllers/admin/users_controller.rb: * [101] [RELEASE] เราต้องดูส่วนนี้ก่อนการเปิดตัวครั้งถัดไป * [132] [FIXME] มีความสำคัญสูงสำหรับการติดตั้งครั้งถัดไป

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] ทำการทดสอบ A/B บนสิ่งนี้
  * [ 42] [TESTME] สิ่งนี้ต้องการการทดสอบฟังก์ชันเพิ่มเติม
  * [132] [DEPRECATEME] ตรวจสอบว่าเมธอดนี้ถูกยกเลิกในการเปิดตัวครั้งถัดไป

2.10.3 ไดเรกทอรี

คุณสามารถเพิ่มไดเรกทอรีเริ่มต้นเพิ่มเติมในการค้นหาโดยใช้ config.annotations.register_directories โดยรับรายการชื่อไดเรกทอรี

config.annotations.register_directories("spec", "vendor")
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] วิธีการอื่น ๆ ในการทำสิ่งนี้?
  * [132] [FIXME] มีความสำคัญสูงสำหรับการติดตั้งครั้งถัดไป

lib/school.rb:
  * [ 13] [OPTIMIZE] ปรับโค้ดนี้ให้เร็วขึ้น
  * [ 17] [FIXME]

spec/models/user_spec.rb:
  * [122] [TODO] ตรวจสอบผู้ใช้ที่มีการสมัครสมาชิกทำงาน

vendor/tools.rb:
  * [ 56] [TODO] กำจัดความขึ้นอยู่กับความขึ้นอยู่กับสิ่งนี้

2.10.4 ส่วนขยาย

คุณสามารถเพิ่มส่วนขยายไฟล์เริ่มต้นเพิ่มเติมในการค้นหาโดยใช้ config.annotations.register_extensions โดยรับรายการส่วนขยายไฟล์พร้อมกับ regex ที่เกี่ยวข้องในการจับคู่

config.annotations.register_extensions("scss", "sass") { |annotation| /\/\/\s*(#{annotation}):?\s*(.*)$/ }
$ bin/rails notes
app/controllers/admin/users_controller.rb:
  * [ 20] [TODO] วิธีการอื่น ๆ ในการทำสิ่งนี้?
  * [132] [FIXME] มีความสำคัญสูงสำหรับการติดตั้งครั้งถัดไป

app/assets/stylesheets/application.css.sass:
  * [ 34] [TODO] ใช้องค์ประกอบเทียมสำหรับคลาสนี้

app/assets/stylesheets/application.css.scss:
  * [  1] [TODO] แยกเป็นคอมโพเนนต์หลายอัน

lib/school.rb:
  * [ 13] [OPTIMIZE] ปรับโค้ดนี้ให้เร็วขึ้น
  * [ 17] [FIXME]

spec/models/user_spec.rb:
  * [122] [TODO] ตรวจสอบผู้ใช้ที่มีการสมัครสมาชิกทำงาน

vendor/tools.rb:
  * [ 56] [TODO] กำจัดความขึ้นอยู่กับความขึ้นอยู่กับสิ่งนี้

2.11 bin/rails routes

คำสั่ง `bin/rails routes` จะแสดงรายการเส้นทางที่คุณกำหนดไว้ทั้งหมด ซึ่งมีประโยชน์ในการติดตามปัญหาในการเส้นทางในแอปของคุณหรือให้คุณมีภาพรวมที่ดีเกี่ยวกับ URL ในแอปที่คุณกำลังพยายามทำความรู้จัก

### `bin/rails test`

ข้อมูล: คำอธิบายที่ดีของการทดสอบหน่วยใน Rails มีอยู่ใน [A Guide to Testing Rails Applications](testing.html)

Rails มาพร้อมกับเฟรมเวิร์กการทดสอบที่เรียกว่า minitest Rails เสียใจเป็นอย่างยิ่งกับการใช้ทดสอบ คำสั่งที่มีให้ในเนมสเปซ `test:` จะช่วยในการเรียกใช้การทดสอบต่างๆ ที่คุณคาดหวังว่าคุณจะเขียน

### `bin/rails tmp:`

ไดเรกทอรี `Rails.root/tmp` เหมือนกับไดเรกทอรี /tmp ในระบบปฏิบัติการ *nix เป็นที่เก็บไฟล์ชั่วคราวเช่นไฟล์รหัสประจำตัวกระบวนการและการกระทำที่ถูกแคช

คำสั่งที่มีเนมสเปซ `tmp:` จะช่วยในการล้างแคชและสร้างไดเรกทอรี `Rails.root/tmp`:

* `bin/rails tmp:cache:clear` ล้าง `tmp/cache`
* `bin/rails tmp:sockets:clear` ล้าง `tmp/sockets`
* `bin/rails tmp:screenshots:clear` ล้าง `tmp/screenshots`
* `bin/rails tmp:clear` ล้างไฟล์แคชทั้งหมด ไฟล์ sockets และไฟล์สกรีนช็อต
* `bin/rails tmp:create` สร้างไดเรกทอรี tmp สำหรับแคช sockets และ pids

### อื่นๆ

* `bin/rails initializers` พิมพ์รายการ initializers ที่กำหนดไว้ทั้งหมดตามลำดับที่ Rails เรียกใช้
* `bin/rails middleware` แสดงรายการ Rack middleware stack ที่เปิดใช้สำหรับแอปของคุณ
* `bin/rails stats` เหมาะสำหรับดูสถิติเกี่ยวกับโค้ดของคุณ เช่น KLOCs (พันบรรทัดของโค้ด) และอัตราส่วนของโค้ดกับการทดสอบ
* `bin/rails secret` จะให้คุณได้รับคีย์เป็นจำลองสุ่มเพื่อใช้สำหรับคีย์เซสชันของคุณ
* `bin/rails time:zones:all` แสดงรายการเขตเวลาที่ Rails รู้จักทั้งหมด

### งาน Rake ที่กำหนดเอง

งาน Rake ที่กำหนดเองมีนามสกุล `.rake` และถูกวางไว้ใน `Rails.root/lib/tasks` คุณสามารถสร้างงาน Rake ที่กำหนดเองเหล่านี้ได้ด้วยคำสั่ง `bin/rails generate task`

```ruby
desc "I am short, but comprehensive description for my cool task"
task task_name: [:prerequisite_task, :another_task_we_depend_on] do
  # All your magic here
  # Any valid Ruby code is allowed
end

เพื่อส่งอาร์กิวเมนต์ไปยังเทสท์เรา:

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 Guides ก่อนเพื่อตรวจสอบ ว่าปัญหาได้รับการแก้ไขหรือไม่ในสาขาหลัก ตรวจสอบ คู่มือแนวทาง Ruby on Rails เพื่อดูรูปแบบและกฎเกณฑ์

หากคุณพบข้อผิดพลาดแต่ไม่สามารถแก้ไขได้เอง กรุณา เปิดปัญหา.

และสุดท้าย การสนทนาใด ๆ เกี่ยวกับ Ruby on Rails เอกสารยินดีต้อนรับที่สุดใน เว็บบอร์ดอย่างเป็นทางการของ Ruby on Rails.