Ruby on Rails開発のインターン (Day 11)

こんにちは、皆さん!

今日の朝はちょうど座った時に避難訓練があった。ちょっとタイミングがね...(笑)
それはさておき、今日はHeroku上のバグを修正できるようにがんばっていくぜ!


  • トピック:
  1. モデルクラスの中で関数を使う
  2. tunemygcジェムはrakeタスクを妨害する可能性がある


  • 疑問:


  • 問題:


  • 学習した内容:
  1. モデルクラスの中で関数を定義し、他のファイルでそのクラスからなるオブジェクトに対してその関数を使える


  • 今後やりたいこと:


  • リソース:


モデルクラスの中で関数を使う

Userというモデルがあり、 そのuserには'name', 'email', 'age', 'gender', 'address'があるとしよう。もし、この状況で頻繁にuserの詳細をアウトプットさせるようだったら、毎回下記のようにコードを打ち込むことになる。

"Name: " + @user.name + " Email: " + @user.email + " Age: " + @user.age + " Gender: " + @user.gender + " Address: " + @user.address

これはめんどくさいし、後で修正するときにすごく手間がかかる。
ということで、次のようにapp/models/user.rbファイルの中に関数を定義する。

def info
   "Name: " + @user.name + " Email: " + @user.email + " Age: " + @user.age + " Gender: " + @user.gender + " Address: " + @user.address
end

そしたら、詳細をアウトプットしたいとき、info関数を下記のように使えばできる

# users_controller.rb
def index
    @users = User.all
    @users.each do |user|
          puts user.info
     end
end

def show
    @user = User.find(params[:id])
    puts @user.info
end

これで書くコードの量がだいぶ減る。


後から考えてみれば、Userはapp/models/user.rbでクラスとして定義されていてUserのオブジェクトであるのなら、Userクラスで定義されている関数はごく普通のOOP言語のように使える。Railsのように最初から結構複雑にいろいろなファイルを作られると案外気づかないものだ(笑)

tunemygcジェムはrakeタスクを妨害する可能性がある

HerokuでGCチューニングをやりたいと思っていたものの、ずっとheroku run rake db:seedをするときにエラーが発生し、うまくいかなかった。いろいろ試した。データベースのリセット、Herokuにコードを再度プッシュなど、けどどれもダメだった。


それで、諦めて、一個前のコミットに戻った。変わった内容はGemfileの中にtunemygcジェムがあるかどうかだけ。そしたら、不思議にもHeroku上でうまく使いたかったコマンドが使えるようになった。結果わかったことは、この特定のジェムに関しては、Heroku上にアドオンがあり、HerokuではGemfileではなく、そっちを使うことが望ましかったようだ。
よって、存在するジェムのうち、いくつかのジェムはHeroku上でrakeタスクを邪魔し、アプリケーションがうまくいかなくなる。そういう時はググってHeroku用のアドオンがないかを探してみよう!


***通常、クレジットカードの登録を要求されるが、心配はしなくてよい。これらのアドオンは無料なので請求されはしない!!***

まとめ

今日はtunemygcをどうやってHeroku上で使うかを発見できたので、結構うれしかった。想像以上に時間かかってしまったけど... 。
こっからは帰宅後、学校に戻ってからの話。何人かのコンピュータサイエンスの友達に久しぶりに会った。インターン始めて以来初めて会ったからインターンについて色々聞かれた。その中で、なぜ職場ではLinuxを使っているのか聞かれたがよくはわからなかった。中にはLinuxWindowsMacOSと違って、オープンソースで情報を提供会社に盗まれないからとかいう理由まで。とりま、明日マネージャーに聞いてみよう!


ご精読ありがとうございました。では、また次回まで✌



Day 12はこちら↓↓
programming-shop.hatenablog.com


Day 10はこちら↓↓
programming-shop.hatenablog.com