ヨージとプログラミング

プログラミング勉強の記録

2020-01-01から1年間の記事一覧

【Rails】あるモデルの1属性だけを変更するコントローラーの命名方法

Web系自社開発企業に入社してから初めての投稿です〜 TL;DR 特殊なコントローラーの命名方法についてです うまくまとめれないので全文読んで コントローラーの命名に迷ったら見てください (失敗談)Customerモデルのnote属性のみを変更するコントラーを作った…

【Rails】ransackで複数モデルから検索したい時

TL;DR search_from_forヘルパーは使わない viewでは検索ワードのみ取得 controllerで検索する 環境 Rails 5.2.4.1 Ruby 2.6.5 Ransack 2.3.2 ransackの通常の使い方の延長では無理だった 前提 channelモデルとpostモデルから、検索ワード一致のものをすべて…

【Rails】ransackで複数モデルから検索したい時

TL;DR search_from_forヘルパーは使わない viewでは検索ワードのみ取得 controllerで検索する 環境 Rails 5.2.4.1 Ruby 2.6.5 Ransack 2.3.2 ransackの通常の使い方の延長では無理だった 前提 channelモデルとpostモデルから、検索ワード一致のものをすべて…

【Rials】cronoのREADME通りに設定するとうまく行かないよという話

TL;DR cronoでrakeタスクをスケジュールするときRake::Task['タスク名'].invokeではなくRake::Task['タスク名'].executeで呼び出そう cronoの公式通りにやると、最初の1回目しかrakeタスクが実行されない cronoはrailsのgemで、ジョブスケジューラーです。…

【Rails】Dockerなジョブスケジューラーはwheneverよりcronoがいい

ほとんど検証してない上に独断と偏見ばっかです TL;DR Dockerにcronをインストールしてやる方法はうまく動かなかった(調査中) そもそもcronに依存するスケジューラーは使い勝手悪い cronに依存しないジョブスケジューラーを選定すべき(cronoとか) cronに依…

【Rails6】rails newでちょっとしかファイルができない時の対処

rails newが途中で止まっていた 新規プロジェクトでrails newした時です。明らかに生成されるファイルの数が少ない。configフォルダは?appフォルダは?modleは!? >>> docker-compose run --rm backend rails new . --force --database=mysql (略) exist c…

【heroku】heroku環境では画像は必ずS3に保存しよう

herokuには画像を保存しておけない しりませんでした。 Instagramのクローンアプリをherokuにデプロイした後、seedデータ(ユーザー、画像)を投入。ルートページにアクセスして確認する、うまくいってるなニッコリ 翌日、ルートページを確認すると画像が表示さ…

【Ruby】ある文字列が、リストの中に一致するものがあるか?のやり方が分かって最高

paizaやっててシリーズ Pythonの"in"を目指して もともとPythonを勉強してたこともあり、条件式'in'をついついRubyでも使ってエラーを出してしまう。 word = "greate" list = ["happy", "planet", "greate"] # Python print(word in list) => True # Ruby pu…

【Rails】AWS ECS(EC2)へのseedの流し込み方

王道かはわかりませんが、とりあえずできたので 前提: Mac PC, EC2 on ECS, Rails5, ruby 2.6, EC2 key-pair取得済み, ECS起動済み ① EC2へssh接続 ターミナルです。 $ ssh -i key-pair.pem ec2-user@<パブリックip> ② 起動コンテナ確認 $ docker ps => CON…

【Ruby】1.hourなどでNoMethodError (undefined method `hours'になる場合の対応

Paizaをやっててシリーズ '1.hour'はTimeクラスじゃなかった(衝撃) Paizaで時刻を扱え問題に出会いました。 そうなると、Timeクラスの計算をすることがあります。 例えば、現在の時間から10分後の時間を表示するとします。↓ now = Time.now # => 2020-01…

【Ruby】配列の統合(flatten)と分割(each_slice)

paizaやるときに調べたシリーズ 行列(marix)の操作の時に使用した 数学ではおなじみ行列 以下のような3行3列の行列があったとする 1 2 3 4 5 6 7 8 9 私の浅知恵では、これをプログラムで扱うとすると、配列で入れ子にするのがいいんじゃないかと思うわけで…

【Ruby】配列から要素を抜き出すpop, shift

Paizaをやってて調べたことシリーズ popはケツから、shiftはアタマから 配列に入っている要素を使いたい場合、インデックスを指定して利用することが多いと思います(例:array[1]とか) しかし、その場合だと要素を参照しただけで、元の配列自体から要素を…

【Paiza】Rubyでは文字列のeachはeach_charでまわす等

D問題を解く過程で調べたこと 文字列を1文字ずつeachする時はeach_char word = "abcdef" #正しい word.each_char { |w| puts w } # 間違い word.each { |w| puts w } 文字列に特定の文字が含まれているかの判定に、'in'が使えない(多分) これはpythonとの比…

【Rails】RSpec(Capybara)で使うvisitはit句の中でしか使えない?(調査中)

調べ中ですが忘れないようにとりあえずメモ system specでよく使うvisit system specを書く時、僕なんかはログイン状態のテストをするときは visit login_path みたいに書いて、ログインページに移動するんですが。何気なく使っていると以下のようなエラーが…

【Rails】ActiveRecord::StatementInvalid: Mysql2::Error: Error dropping database (can't rmdir './app_name_test', errno: 39): DROP DATABASE IF EXISTS `app_name_test`

RSpecを実行しようとしてエラー発生 RSpecをdocker環境で実行しようとしてタイトルのようなエラーが発生しました。 >>> docker-compose run web rspec spec/system/records_spec.rb rails aborted! ActiveRecord::StatementInvalid: Mysql2::Error: Error dr…