ぺろのなるほどブログ

ぺろがなるほどした話を書きます

【初めてエンジニアさんが集まるイベントに参加した話】Rails Girls Tokyo 12th

Rails Girls Tokyo 12th に参加させて頂きました!

2019年8月2,3日に開催されたRails Girls Tokyo 12thに参加させて頂きました。

Rails Girlsというイベントの存在を知った今年の4月くらいからずっと楽しみにしてたので、抽選で参加が決まった時は本当に嬉しかったです。

エンジニアの、特に女性の方々とお友達になりたくて、参加したイベントでしたが、ほんまにめっちゃくちゃ楽しかった〜〜〜〜〜!!!!


私のコーチをしてくださったのがエンジニアのパンさん(@nappan23)だったのですが、いちいち深追いしがちな私のwhyなぜに対して、根気よくとても丁寧に答えてくださって、本当に勉強になりました。なるほどできる言葉をたくさんもらいました、パンさんが私のコーチで本当によかった。

イベントでは簡単なアプリをコーチの方と一緒に作るということでしたので、基礎から丁寧に教えて頂きました。私は3ヶ月学校で勉強しましたが、今更質問できない基礎のことや、学校の実習ではあまり触る機会がなかった画像表示やデプロイのことを沢山質問させて頂いて、マンツーマンでこんなに丁寧に教えてもらえるなんてありがたすぎるやん圧倒的感謝。課題自体は早めに終わってしまったので、今取り組んでいるポートフォリオ用の個人アプリで詰まっていた所や、githubの使用方法でわからなかったことなども質問させて頂きました。



以下、めっちゃなるほどしたやつ

ruby使ってるからってみんなrailsを使ってるわけではない。
逆にrails使ってる人はみんなruby使ってる。

  • 画像イメージの保存の仕方について

カラムをstring型にしている時は、dbに文字列で保存している。この画像があるこのファイルのここに取りにいくよ〜という場所指定保存の仕方。
そのライブラリーがキャリアウェーブ。

  • デプロイについて(heroku)

自分で登録した情報がローカルのdbに保存されている。
コードをリモートにプッシュしても、dbに保存された情報はリモートには上がらない。
ローカルではsqliteというdbが動いている。(dbファイルサイズが軽くて使いやすい。)

group :development do
  gem 'sqlite3'
end

sqliteはリモートでは動かないので、ポストグレスsqlで使えるようにする必要がある。

group :production do
  gem 'pg'
end

コマンドで。ローカルにはpgはいらないから、withoutにする。

$bundle install --without production

最後にリモートのdbをマイグレートする。
リモートで使ってるdbもマイグレーションする必要がある。

なるほどな〜〜〜!


アフターパーティでは、色んな経歴のエンジニアさんから色んな話をたくさん聞けて本当に勉強になりました。未経験異業種からエンジニアになられた方が結構いらっしゃったので、とてもいい刺激を頂きましたし、何よりみなさん本当に良い方ばっかりで、私も早くこんな素敵な人たちと一緒に働きたい。。。と強く思いました。

転職を!!頑張るぞ!!


また、Rails Girls Tokyo more! や英語話者のエンジニアmeet upもあるよ〜と教えて頂いたので、他のイベントにももっと参加していきたいです。

Rails Girls Tokyo スタッフコーチのみなさま、ありがとうございました!
イベント内でお話頂けたみなさま、ツイッターでお友達になってくださったみなさま、これからも何卒よろしくお願いいたします!

【Railsモデル作成】マイグレーションと外部キーで失敗した話

 

こんにちわ、ぺろです。

 

今日はモデル作成の時に、

マイグレーションと外部キーの設定で失敗した時の話をします。

 

モデルを作る上で、お約束がいっぱいありますよね??

その中で、今回私が声を大にして皆さんにリマインドしておきたいのがこちら

  1. モデル作る時も、親モデルから子モデルの順にマイグレイト せなあかん〜!
  2. マイグレーションファイルは、1回しか読み込まれへんで〜!
  3. マイグレーションファイル自体を消したらあかんで〜!

諸先輩方には、当たり前の話やと思います。

しかしこの新米ぺろはやってしまいました、これ全部。 

 

 

1. モデル作る時も、親モデルから子モデルの順にマイグレイト せなあかん〜!

 

失敗:

アプリ制作の要であるデータベース設計をやっと終えると、

思ったよりも大量のモデルが出来上がりました。

これはrails g modelのしがいがあるで〜〜〜〜〜

鼻息も荒く腕まくりしながら端からじゃんじゃんモデルを作りまくって行きました。 

モデルのマイグレートファイルを作成して必要事項を記入し、

全てのファイルを一気にマイグレート!!。。。

するとどうでしょう、モデル作成後の作業でforeign_keyなんかないで〜!のエラーが続出。

 

解決方法:

今回理解しておかないと行けなかったのは、

■モデルにも、ちゃんと親モデル子モデルの関係がある、ということ。

あともう一つ、

■外部キーは関係のあるモデル間、つまりbelongs_toする先のモデルがないと設定できないということ。

一気にマイグレートしてしまったおこめは、belongs_to先のモデルが揃ってなかったので外部キー設定出来ていなかったのです。

 

つまり、親モデルから順番に作っていき、必要モデルが揃ったところでforeign_keyの設定をマイグレイト しないといけなかったんですねなるほどな〜。

 

 

2. マイグレーションファイルは、1回しか読み込まれへんで〜!

 

失敗:

じゃあなぜ最初のマイグレーションの時にエラーが出て気づかなかったのかというと、

外部キー設定の記述を忘れていたんですね。

一気にマイグレーションした後にそのことに気づいて、

そのままのファイルに記述をし再度マイグレート!。。。

そうです、この時に2つ目のミスを犯していました。

一度読み込まれたマイグレーションファイルは、2度目はスルーされる、つまり読み込まれないんですよね。。。スルーされてるんやからそりゃエラーは出ないですわ。

そのことをすっかり失念していた私は、

これで外部キー設定が出来たと思い込んでいました。

 

解決方法:

マイグレーションファイルは1度読まれたファイルはもう使えない。

■モデルに何か変更を加える時(カラムを追加する等)は必ずそれ用のマイグレーションファイルを作り直す。

当たり前ですね!すみません!

 

3. マイグレーションファイル自体を消したらあかんで〜!

 

失敗:

邪魔やったから物理的に消しちゃったんですよね〜!

カッなってつい。

するとロールバックもマイグレートも出来なくなってしまいました。

 

解決方法:

Schemaファイルと辻褄が合わなくなってしまいます。

マイグレーションファイルは物理的に削除せず、ちゃんとエラーを読みましょう。(はい)

■ターミナル内rake db migrale:statusでマイグレーションのステータスを確認。

No file : UP というステータスの記述が、物理的にファイルを削除してしまったマイグレーションのステータス。これをdownにして削除しなければ前に進めない。

vim db/migrate/(migration_file_id)_tmp.rbのコマンドを使用

消してしまったファイルをTmpファイルとして復活させる。

 

Tmpファイル内の記述:

 

>|ruby|

 class Tmp < Active Record::Migration

      def change

      end

    end

||<

 

※Tmpファイルは1度に2つは作れないので、1つずつ作業する。

■ bundle exec db:migrate:down VERSION=ファイルのidのコマンドを使用

ステータスをupからdownへ

■rm-rf db/migrate/ファイルのid_tmp.rbのコマンドを使用

tmpファイルを削除

 

 

 

〜無事migrate出来ました!〜

参考記事:https://qiita.com/yukofeb/items/ce39c7aabbfdc16205ea

(ありがたや)

 

 

BDをめちゃくちゃにいじってしまいましたが。。。

とてもいい勉強になりました。

失敗は勉強の素。

 

 

ぺろでした。

 

 

 

 

【プロフィール】三十路半ばにしてプログラミングを始め、web業界に就職したいぺろの話

こんにちわ。

三十路半ばで一念発起して仕事を辞め、

3ヶ月ひたすらプログラミングのことを勉強しまくった系女子、ぺろです。

気がつけばもうアラフォーですね、ずいぶん遠くまできたものです。

 

早速ですが、これまでの経歴と、

なぜプログラミングを始めてみようと思ったのかを、

自己紹介を兼ねて書かせて頂きます。

 

 

〜大阪時代〜

人生の輝ける大学生時代を、ひたすらフルートの腕を磨くことのみに注ぎ込み、

平穏無事に大学を卒業。

某大手雑貨屋チェーンや百貨店のアルバイトで接客を学びながら、

フルート講師、フルート吹きとして演奏活動を続ける。

教える仕事を通して、誰かのために自分の知識経験を提供することに大変な遣り甲斐を感じつつも、長年憧れ続けたヨーロッパでの生活を実現するため、イギリスのワーキングホリデービザを取得し、渡英。

 

 

〜イギリス時代〜

海外旅行もしたことがなかったが、業者に支度手数料を払いたくないという一心で、

語学学校、宿泊先、渡航手続きを全て自分でこなす。

英語が全く話せないにも関わらず、単身イギリスに乗り込む。

中学生英語で何とか大阪の片田舎から、イギリスのオックスフォードまでたどり着き、

3ヶ月の語学学校生活を送る。(とっても楽しかった)

 

働いて賃金を得たく、ロンドンに移り住み安定の日本食レストランで働く。

そのお金でヨーロッパへ旅行へ行きまくる。(オランダドイツイタリアフランスオーストリアフィンランドスウェーデンエストニアラトビアリトアニアチェコクロアチアベルギーアイルランドスコットランドスペイン)

 

海外の人と音楽がしたいという野望もあったため、

街のアマチュアオーケストラを訪れては一緒に演奏させてもらい、

メンバーと仲良くなりつつ、英語力を磨く。

 

大家さんのツテで某日本国営放送の欧州中継放送の編集業務のお仕事をもらう。

英国国営放送社内での業務だったので、そちらのスタッフさんたちとおしゃべりしまくり、英語力を磨く。

 

帰国直前に、白昼堂々路上でのひったくりに遭いiPhoneを奪われるが、

叫びながら犯人を追いかけ、頭を蹴られても放さない執念をみせ、

犯人をブタ箱送りにし、人生初の裁判にロンドンで出廷する。

この時が一番英語が喋れた。

(とても良い経験になりました)

 

たくさんの友人に囲まれながらも、惜しまれつつ帰国。

 

 

〜再び大阪時代〜

折角話せるようになった英語を使いたくて関西の某大型テーマパークで、

アメリカ人8人によるドラムチームのショーアシスタント(お世話係)の職に就く。

しかしイギリスで学んだ英語は、アメリカ英語には太刀打ちできず、

あまりの違いに驚愕する。(何言ってるかさっぱりわからなかったです)

持ち前のコミュニケーション力でなんやかんやで仲良くなりつつも、

東京での就職が決まり、惜しまれつつ退職。

最後のショーでメンバーの心遣いに号泣、泣きながらショーアシスタント業を終える。

 

 

〜東京時代〜

父の仕事の影響で貿易事務業に従事する。

しかし、決まりきった書類作成業務に限界を感じ、4年で退職。

 省庁や大学主催のイベントやシンポジウムを委託主催する興味深い会社に転職するも、

あまりの給料の低さに絶望する。

このままなんのスキルもなくこれからの人生生きていけるのかと将来が不安になり、何か手に職をつけなければと、突然焦り出す。

転職エージェントからのメールで偶然見つけたプログラミングに興味をもつ。 

 

〜プログラミング、始めました〜

プログラマーについて調べ始めると、「新しいものが次から次へと出てくる日進月歩のIT業界、常に勉強し続け自分をアップデートしていかなければならない」という諸先輩方のお言葉に、これまでの人生 でいつも成長を感じられずに焦燥感に駆られていた私は、なんとやり甲斐に溢れた業界なんだろうと感じ、持ち前の行動力と好奇心ですぐに会社をやめ、プログラミングの勉強に没頭する。

Rubyから勉強をはじめ、HTML/CSSと、Ruby on RailsjQueryを学ぶ。

三十路未経験という日本社会では大変不利な状況を打開するべく、人とのつながりが重要と考え、プログラミング初学者の方々と積極的に交流する。

開発していくことにあたって欠かすことのできないチーム開発において、一人での学習とは全く違う難しさと楽しさを経験し、いつもの人の良さでチームの雰囲気作りに貢献する。パソコンめっちゃ苦手人間 の私がここまで勉強して来られたのも、良い仲間に恵まれたからこそだと感じ、出会いに感謝。←イマココ

 

 

以上、ぺろが生きた軌跡について、ここまでお読みいただき誠にありがとうございます。三十路も半ばということで、ありがたいことに人生経験も増えて、良い仲間たちに恵まれ、毎日楽しく暮らしています。あとは就職できれば万々歳というところ。

今プログラミング学習を初めて4ヶ月目に入りました。まだまだ勉強しないといけないことばかりですが、前職では味わったことのない、自分の手で創り出すモノ創りの喜びと充足感を大変感じています。新しいことをどんどん学んでいけるこの業界で長く働いていきたいと考えています。

 

どうぞよろしくお願いいたします。

 

好きなお米に合うおかずは生姜焼き       

ぺろ