Ruby on Rails的安裝配置教程詳解

來源:互聯網
上載者:User

學習與開發 Ruby on Rails 應用的過程是在本地電腦上完成的。也就是你需要在本地電腦上建立 Rails 項目,運行它,然後學習或去做真正的開發。兩種方法,一是可以直接在本地電腦上安裝 Rails 項目的所有工具,然後直接在本地電腦上運行 Rails 項目。另外, 我們可以使用 Docker 去 Compose 一個 Rails 項目。

在本地直接運行 Rails 項目

需求

我在 macOS 上測試了整個過程。你需要:

安裝 Ruby
安裝 Xcode
安裝 rails

開啟終端,用 Ruby 的 Gem 去安裝 Rails:

gem install rails
這會安裝最新的 rails。你也可以指定安裝具體的 Rails 版本,像這樣:

gem install rails -v 5.0.0.1
如果你遇到錯誤:

Building native extensions. This could take a while...
ERROR: Error installing rails:
       ERROR: Failed to build gem native extension.
意思是不能構建本地擴充,Google 上面遇到的錯誤,找到網頁:http://stackoverflow.com/questions/19580685/installing-rails-on-mavericks

解決的方法是執行:

xcode-select --install
上面的命令是安裝了 Xcode 的 Command Line Developer Tools(開發人員命令列工具)。完成以後再次執行:

gem install rails
安裝過程需要一段時間,看到下面提示,說明成功的安裝了 rails:

Successfully installed
建立 Rails 項目

rails new 命令可以建立新的 Rails 項目,執行:

cd ~/desktop
mkdir rails-app
cd rails-app

rails new .
先進入到案頭上,建立一個 rails-app 目錄,進入這個目錄,再用 rails new 在目前的目錄下建立一個 Rails 項目。

啟動 Rails 項目

rails server 可以啟動 Rails 項目。執行:

rails server
如果遇到錯誤:

getaddrinfo: nodename nor servname provided, or not known (SocketError)
預設伺服器的連接埠號碼是 3000,如果你的本地電腦已經使用了 3000 這個連接埠就會遇到上面這個錯誤,解決的方法是在建立伺服器的時候手工的指定一下新的連接埠號碼,像這樣:

rails server -p 3300 -b '0.0.0.0'
這樣你可以開啟地址:

http://localhost:3300
你會看到 Rails 應用的歡迎介面。

48AA8CB6-CEDC-40B8-B2AE-B9BD7FBEDF2D

在本地用 Docker 運行 Rails 項目

這會是我最終選擇的在本地運行 Rails 項目的方法。以後,我也會假設您選擇的是這種方法。

需求

安裝 docker for mac / docker for windows

目錄結構

 → mkdir -p app services/rails/config
 → ls
app  services
 → touch docker-compose.yml services/rails/Dockerfile services/rails/config/Gemfile
 → tree
.
├── app
├── docker-compose.yml
└── services
    └── rails
        ├── Dockerfile
        └── config
            └── Gemfile

4 directories, 3 files
Compose

開啟項目根目錄下的 docker-compose.yml,定義幾個服務:

version: '2'
services:
  rails:
    build:
      context: ./services/rails
      dockerfile: Dockerfile
    volumes:
      - ./app:/mnt/app
    ports:
      - "3000:3000"
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    tty: true
  db:
    image: mariadb:10.1
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "app"
      MYSQL_USER: "app"
      MYSQL_PASSWORD: "123123"
    volumes:
      - db:/var/lib/mysql
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8081:80"
    environment:
      PMA_HOST: "db"
      PMA_USER: "root"
      PMA_PASSWORD: "root"
volumes:
  db:
    driver: local
Gemfile

開啟 services/rails/config/Gemfile 檔案,輸入內容:

source 'https://rubygems.org'
gem 'rails', '5.0.0.1'
Dockerfile

開啟 services/rails/dockerfile 檔案,輸入內容:

FROM ruby:2.3
MAINTAINER wanghao <wanghao@ninghao.net>

RUN apt-get update && apt-get install -y nodejs \
  && rm -rf /var/lib/apt/lists/*

RUN gem install rails --pre --no-ri --no-rdoc
RUN mkdir -p /mnt/app
WORKDIR /mnt/app
RUN rails new .
EXPOSE 3000
啟動服務

運行 Docker,然後在項目的根目錄下,執行:

docker-compose up -d
建立項目

在項目的根目錄下,執行命令建立一個 rails 項目:

docker-compose run rails rails new .
新的專案檔會儲存在 app 目錄的下面。

再次啟動

新建立了項目以後,再次執行:

docker-compose up -d
然後開啟瀏覽器,輸入地址:

http://localhost:3000
你會看到下面這個歡迎介面:

7917D846-21E0-4A4E-B784-A886334C4582

執行命令

在開發 Rails 應用的時候,你需要用到很多命令列工具,我們可以進入到 rails 服務的容器裡,然後去執行需要的命令。進入到 rails 服務的容器:

docker-compose exec rails bash
hello,Rails

讓 Rails 說出 “hello”,可以建立一個簡單的控制器與視圖。

用 controller 生產器,去建立一個名字是 Welcome 的控制器,裡面有一個 index 動作:

rails generate controller Welcome index
結果像這樣:

Running via Spring preloader in process 54
      create  app/controllers/welcome_controller.rb
       route  get 'welcome/index'
      invoke  erb
      create    app/views/welcome
      create    app/views/welcome/index.html.erb
      invoke  test_unit
      create    test/controllers/welcome_controller_test.rb
      invoke  helper
      create    app/helpers/welcome_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/welcome.coffee
      invoke    scss
      create      app/assets/stylesheets/welcome.scss
控制器:

app/controllers/welcome_controller.rb
視圖:

app/views/welcome/index.html.erb
開啟 index.html.erb 這個視圖,刪除裡面的所有內容,添加下面的東西:

<h1>hello</h1>
訪問地址:

http://localhost:3000/welcome/index
你會看到 “hello” 。

設定應用的首頁

編輯檔案:

config/routes.rb
內容如下:

Rails.application.routes.draw do
  get 'welcome/index'
  root 'welcome#index'
end
root 'welcome#index',意思是用 welcome 控制器的 index 動作來處理對應用首頁的請求。

get 'welcome/index',意思是請求 welcome/index 這個地址的時候,用 welcome 控制器的 index 來處理。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.