サーバ上でのrailsの動かし方とその際におこるエラー
railsを使ってwebサービスを作ってそれをサーバーにデプロイするまでの手順とエラーを紹介していきます。サーバーはさくらVPSを使用しています。
大まかな流れとしてはこんな感じです。今回は開発環境の構築方法については省きます。
sshでサーバーにログイン
サーバにログインする際には「ssh」コマンドを使います。
また、ユーザーを指定してログインする際には
といった感じにするとログインすることができます。また、ポート番号をしてのログインは
といった感じになります。
railsプロジェクトのインポート
サーバーにgitからソースをクローンしてプロジェクトをインポートをします。一応はコマンドはしたのような感じです。
git clone ~~
実際にうごかす
railsプロジェクトをインポートしたらまずは「bundle install」をして「rake db:migrate」をして実行するのですが、ここでは自分が遭遇したさまざまなエラーと解決法を紹介していきます。
rake db:migrate でのエラー
「bunsle install 」が無事に完了してdbを作成しようとおもったのですが、以下のようなエラーが起きてしまいました。
rake aborted!
invalid byte sequence in US-ASCII
(See full trace by running task with --trace)
原因
これはこのプロジェクト内に日本語のファイル名のものが存在していたのが原因でした。サーバーのencodingがUTF-8のため、US-ASCIIの文字列が含まれているとこのようなエラーが起きてしまいます。
解決法
日本語のファイルを削除、またはファイル名を変更することで「rake db:migrate」が通るようになります。
LoadError cannot load such file -- sass
dbの作成が終了して、これでいけるだろうっと実行してみると今度はこんなエラーがおきました。なんかsassファイルを読み込んでくれない。。。
原因
このプロジェクト作成当初はbootstrapを導入していなかったため、stylesheetの拡張子が「less」でなく「sass」でした。
その名残ファイルがまだ、残っていたみたいでsassを読み込むためのgemを導入する必要がありました。
解決法
解決法は以下の2つです。
- sassのgemをインストール
こちらはいろいろやってみたのですが、うまくいきませんでした(笑) - sassファイルを削除する
1の方法で失敗してうまくいかなかったため、sassファイルを削除すると成功しますw
SyntaxError
さて、やっと表示されたかなと思ったら、今度は下のような画面になっちゃっいました。
コンソール上でエラーを確認すると、下のようなエラー文がでてました。
invalid multibyte char (US-ASCII)
原因
ページ上にUS-ASCIIの文字列があったため、うまくエンコーディングができなかったためにこのようなエラーがおきてしまいました。
解決法
この解決方法は簡単で、表示したいviewのcontrollerの先頭に以下の文を付け加えるとなおります。
# encoding: utf-8