Ruby on rails -- 關於使用nginx 網站部署


#1

不好意思,想請教各位Ruby高手,
首先想跟各位抱歉我並非ruby開發人員,
我屬於OA維護相關人員,因需協助開發人員架設測試環境遇到些困難
才鼓起勇氣請教各位,若有太愚蠢的問題請各位見諒。
首先我已經有Rails專案檔,我使用Ubnutu+Nginx+Passenger+MySQL架設,
基本的安裝相關套件(Nginx,Passenger,MySQL)我想我應該都有設定完成,
接著就是要bundle install Gemfile ,我也做了,所以restart nginx 以及MySQL,
卻顯示一個錯誤訊息:

我大概可以判斷出錯誤訊息所說明的是我MySQL沒有欄位,但Rails專案檔內有db資料夾,
資料夾內有schema.rb 以及migrate ,我稍微google一下這應該是會協助新增資料庫欄位的一個程式,
我詢問了一下有些人說bundle install 就會解決我這個問題,但似乎沒有,
我自己也查了一下,好像要跑一段程式 bundle exec rake db:schema:load ,
但也是跳跟web這錯誤訊息一樣,
想請教這邊各位高手,不知這樣說明是否能協助找尋原因在哪邊,先謝謝各位大家了!


#2

rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production

產品環境的指令要特別指定環境
檢查方法是:
你可以直接進入 mysql 裡面看看各個環境對應的 database 有沒有建立起來

shell> mysql -u root -p
mysql> show database;


#3

先謝謝您的回答,
目前Ruby的環境只有一個,所以只有建一個資料庫,
也確認資料庫有建立完成,
有輸入您上面二行程式,第二行 (migrate) 的時候跳出一樣的錯誤訊息


#4

ruby的環境只有一個還是可以建立很多個資料庫的
一般一個rails專案都會有三個資料庫 test development production
所以你只有一個資料庫的話應該是有問題的
rake db:create 產生的資料庫是 development
rake db:create RAILS_ENV=production 產生的資料庫是 production用的
然後其實 mysql 這邊 gem 的綁定和不同 linux 環境設定還滿多雷的
不同版的 ruby 使用不同版本的 mysql2 adapter 連接到不同版本的 mysql (5.5 5.6 5.7) 都可能發生不同的狀況
這邊通常除錯的程序都是遇到問題再 google 然後讀懂裡面的內容
比較沒有一個整體性解法


#5

把你的

%RAILS_APP%/config/database.yml

去除帳號密碼相關資訊後丟出來,因為我懷疑你該檔案亂搞或亂寫

這邊提醒一下, database.yml 是 YAML 格式,其縮排就是巢狀包裹,所以不允許有多餘的空白或 tab ,否則資料結構會整個亂掉,這邊的概念同 Python

簡單的來說

development:
  adapter: mysql2
  encoding: utf8
  database: SKIP
  pool: 5
  username: SKIP
  password: SKIP
  socket: SKIP

這樣是ok的

development:
  adapter: mysql2
  encoding: utf8
  database: SKIP
   pool: 5
  username: SKIP
  password: SKIP
  socket: SKIP

但是這樣是絕對不 ok 的,因為 pool 為 hash 下的同一層的 key,大概懂意思嗎?且空白和 tab 不能混用,在 Ruby 下不建議用 tab 做縮排,以上