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

こんにちは、皆さん!

インターン2日目がやってきました。
十分に寝てないので、途中でバテるかも
(仕事中にこれ書いてます笑)
最初にミーティングがあって、2日目ということもあり、何もできなかったけど、開発者たちのミーティングがどういうものなのか体験できる貴重な経験でした


  • トピック:
  1. Postgresqlの処理
  2. 既存のデータベースにコラムを追加する


  • 疑問:
  1. ターミナルで-uはどんなことをするのか ?


  • 学習した内容:
  1. Herokuは config/database.yml をつかっていないから、.gitignore に入れてPostgreSQL のパスワードを安全に保護できる
  2. Linuxのいいところはエラーが発生した時にどこの何がダメなのか教えてくれて、足りないものがあれば、それをインストールするためのコマンドも教えてくれるところ
  3. クラウド版のBalsamiqがあり、簡単に他の人とコンテンツをシェアできる
  4. TwilioはメッセージやビデオなどのAPIを提供している会社
  5. Railsでローカルサーバーが使えるのはPumaのおかげである
  6. migrationで既存のデータベースにコラムを追加する


  • 問題:
  1. Postgresqlのパスワードが違って、データベースを作れない (解決)
  2. masterじゃないブランチをHerokuにプッシュすることができない (解決)


  • 今後知りたいこと:
  1. Twilioの使い方


  • リソース:
  1. https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e
  2. https://devcenter.heroku.com/articles/git#deploying-code
  3. http://guides.rubyonrails.org/active_record_migrations.html


Postgresqlの処理

rake db:migrateをしようとした時、Postgresqlのパスワードが違うからエラーが出たけど、正しいパスワードも覚えていませんでした笑
ということで、このウェブサイトへ (Creating user, database and adding access on PostgreSQL) それで下記のを試した:

$ sudo -u postgres psql
psql=# alter user [username] with encrypted password '[password]';

これでうまく既存のパスワードを変更することができました。(パスワード前後のクウォート'を忘れずに)


次にconfig/database.ymlでデータベースが作成されていないというエラーが発生しました。
そこで、先ほどのサイトの下記のコマンドを試してみました:

$ sudo -u postgres createdb [dbname]

すると、うまくデータベースが作成され、無事 rake db:migrateすることができました。

masterじゃないブランチをHerokuにプッシュする

masterじゃないブランチのコードをプッシュしたら、見た感じは大丈夫だったのだが、ウェブの立ち上げをしてくれませんでした。
これはHerokuがmasterで指定されてて、そうじゃないブランチからのコードでのウェブ立ち上げはしないようになっているからです。


でも、このウェブ通りにやってみたら、 (Deploying with Git | Heroku Dev Center).

$ git push heroku [local-branch]:master

でも、このコマンドは次のエラーを返してきました。

To https://git.heroku.com/glacial-beach-21775.git
 ! [rejected]        obi_boyis_first_run -> master (non-fast-forward)
error: failed to push some refs to 'https://git.heroku.com/glacial-beach-21775.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

これはおそらくすでにHerokuのアプリを作成してあったためだと思います。
それでforce pushをしてみようと思いました。

$ git push -f heroku [local-branch]:master

これで一応解決しました。ただ Herokuのアプリを一度削除してから再度作る という方法でも解決できるんじゃないかなと思います。これなら force push する必要はないかと思います。

既存のデータベースにコラムを追加する

リソース: Active Record Migrations — Ruby on Rails Guides

後になって、新しいカテゴリーの情報を保持して欲しいからデータベースにコラムを追加したくなることはしょっちゅうあります。Railsでは下記のようにそれを達成できます。

$ rails g migration AddUserToProducts

これはProductというモデルにユーザーを追加したい際の例です。このコマンドで下記のものが追加されます。

class AddUserToProducts < ActiveRecord::Migration[5.0]
  def change
  end
end

そしたらchangeメソッドの中に下記の内容を追加:

add_column :products, :user, :string

ちなみに、下記のように一度に全部やることもできます。

$ rails g migration AddUserToProducts user:string

(user:stringの間はスペースなし)

まとめ

総合していうと、結構タフな日でした。
テストをして行くには十分なローカルの環境設定は終わりました。僕の主要な役割はテストとその間に潜在するバグを直す方法を探ること。少しずつややこしくなってきたので、もう少しRspecの勉強に時間をかけなければと思ってるところです。
それでも、この自由な環境には感謝してます。彼らは僕が何をしているかは全然気にせず、リフレッシュするために仮眠したり、出歩いてもいいって感じです。ほんとありがたい!!


多分今夜は明日の仕事のためにちゃんと寝ると思う…わかんないけど笑
ご精読ありがとうございました。では、また次回まで✌︎




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


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