Ruby on Rails Dev 1

ボストンに帰宅してから、暖めていたサービスの開発を進めている。コードのベースは前々職からの友人の有吉が創業者のWOZ Incに依頼して作ってもらい、僕はそのベースから開発を進めている。サービス名はCareLingo。違う国にいて病気になった時にどうしたら良いかわからない移民や海外旅行者を対象に、適切な医療機関や薬を見つけることを助けるサービスだ。

CareLingo

Herokuにアップロードするのはそんなに難しくないかと思っていたのだが、環境整備含めて、想像以上に大変だった。。。

  1. Rubyを2.2.4へアップデートできない
    • rbenvを使っていたのだが、ダウンロードしたのが昨年と遅く、rbenv -versionsでも2.2.4がない。よってrbenvのアップデートが必要
    • MacでHomebrewを使っているのでbrew updateしようとしても、更新されたOSとの相性が悪いようで、Homebrewによる更新できない
    • 解決:最終的にはGitHubの下記のコードで解決
      sudo chown -R $(whoami):admin /usr/local
      cd $(brew --prefix) && git fetch origin && git reset --hard origin/master
  2. HerokuにはGitを使うのだが、Gitの使い方わからない
    • Bitbucketからファイルを手動でダウンロードして、git initして、add、commit、pushして、といじってみる。使い方わからず、自分でコードアップデートしてからこれどうすれば良いの、という感じ。
    • Git初心者用サイトを見て学ぶ。ようやくadd, commit, push, fetch, merge, pullのロジックがわかるようになる。
    • Bitbucketのmasterをcloneして進めた方が良いということに気づき、cloneしてHerokuにアップロードする
  3. Localサーバー上でデータベースの内容が反映されていない。なぜ?
    • 原因:そもそもテーブルが作られておらず、データも流し込まれていなかったから。
    • 解決:rails rake db:migrate、rake db:seedを行いました。
  4. Herokuにつなごうとするとエラーが出る。なぜ?
    • 原因:gemfileのRubyのversionを2.2.4に指定していなかったから。また、DBの本番環境用設定をしていなかったから。
    • 解決:database.ymlファイルでPostgreを入れ、gemfileのRuby versionを修正して、一応サーバー上で見れるように。
  5. Herokuで2ページ目以降に行くとエラーが出る。どうして?
    • 原因:データベースをheroku上で作っていなかったからでした。。
    • 解決:heroku run rake db:migrate、heroku run rake db:seedをすることでデータを入れることに成功
  6. rake db:seedを二回行って、重複するデータを登録してしまう
    • 原因:rake db:seedは重複したものも追加することを知らず、同じseedを二度行ってしまう。roll backもできないことを知りませんでした。。
    • 解決: rails db consoleから、.tablesでテーブルの名前を確かめ、地道に全てのテーブルから重複行を DELETE FROM [tablename] WHERE id >= xで削除。追加すべきデータはrails consoleからmodel.newとmodel.saveで追加しました。

すごく初歩的な話だと思いますが、解決するまでに3日かかってます。特に最初のRubyのHomebrew -> rbenvは今までただ単にダウンロードしていたもので、これらがどんな役割を果たしているのかをあまり理解していなかったため、その理解も含めて相当時間かかりました。中身のわからないものをダウンロードして使うのは、使えているうちは良いのですが、何かトラブルがあった時に修正方法が分からず困る、というのを身を持って痛感。

ともあれ、ようやく自分で開発して、それをアップデートしていく、という環境が整いました。テクノロジー系で経営をするのであれば、自分もエンジニアリングができた方が良いというのもありますが、そもそもゼロからサービスを作っていくのは楽しい。構想から形にするところまでできる経営者になれるよう、卒業までコツコツとやっていきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください