→Ruby on Rails RubyによるWebアプリケーションフレームワーク RoR
Agile Web Development with Rails
10分で作るRailsアプリ for Windows http://masuidrive.jp/rails/
Ruby on Rails公式サイトの採用サイト紹介ページ http://wiki.rubyonrails.org/rails/pages/RealWorldUsage
deviseに伴ってsmtpサーバの設定でgmailアカウントが必要になりました。 そのため、dotenvを導入しました。 dotenv-railsをインストールする Railsではdotenv-railsというgemを導入することでdotenvを使用することが可能となります。 使い方 Railsプロジェクト直下に.envファイルを作成し、環境変数を設定出来ます。 SET_USER = sample こんな感じで設定出来ます。 実際のコードでは以下のように使用することで環境変数を読み込むことが可能です。 config.hogehoge = ENV['SET_USER'] 以上
このブログについて 自分用の備忘録ブログです。 技術情報発信ブログではないです。 前提となる記事 aiueo-factory.hatenablog.com 今回やったこと active storage を無効化することにしました。 ref: Active Storage の概要 https://railsguides.jp/active_storage_overview.html Active StorageとはAmazon S3、Google Cloud Storage、Microsoft Azure Storageなどの クラウドストレージサービスへのファイルのアップロードや、ファイルをA…
仕事でマスク機能を開発することになり、その仕様で大変頭を使ったので備忘録として残しておく。 要件 マスクを作成する際、公開/終了時間をそれぞれ設定できる 終了期間はnull可 公開時間 < 終了時間 既に設定されている公開期間と重複して設定できない 具体例 マスク①:2021/01/01 10:00~12:00 マスク②:2021/01/02 17:00~ 以上2件のマスクが既に設定されていたとする。 ここで新たに マスク③:2021/01/01 11:00~13:00 を作成しようとすると①の期間と重複する期間があるためバリデーションエラーで作成不可。 また、 マスク④:2021/01/02…
こんにちわ、168です。 本日はタイマーアプリの試作品を参考ページを確認しながら作成しましたので、記事を書こうと思います。 **タイマーのメインコード app/views/times/index.html.erb <!DOCTYPE html> <h1>TIMER</h1> <form name="timer"> <h2>CountUp</h2> <input value="0" class="hou">時間 <input value="0" class="min">分 <input value="0" class="sec">秒<br> <input type="button" value=…
先日まで動いていたRailsプロジェクトのCI (GitHub Actionsで構築) で、rails関連コマンドが失敗している事に気がついた。 Run ./bin/rails db:reset rails aborted! LoadError: libffi.so.6: cannot open shared object file: No such file or directory - vendor/bundle/ruby/2.6.0/gems/ffi-1.13.1/lib/ffi_c.so ffiというRailsの依存ライブラリがないというエラー。 ffiというライブラリの存在をそもそも…
devise導入してホッとしたのも束の間、メール送信→認証を導入したので備忘録として残します。 盛大に間違っているかもしれませんが、気にしてはいけない。 ちなみに今回はgmailで実装したのでそれ以外でメール送信を実装させたい場合は各自調べてください。 やりかた config/environments/development.rbに以下を追加する。 config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_set…
前回はI18nのデータを元にコメントを追加するというやつを書きました。 patorash.hatenablog.com 今回は、さらに踏み込んで、ActiveRecord::Enumの値が何を示しているのかを、メタプログラミングを使ってコメント化しました。 なお、プロジェクトではgem enum_helpを使っているため、それを前提とします。enum_helpは、enumの値からI18n対応した文言を取得するのを楽にするgemです。 github.com マイグレーションファイルを作る とりあえず生成。 bin/rails g migration AddColumnCommentFromEnu…
本記事の環境 Rails 6.1.1 結論 9sako6 です。突然ですが、 AS 句で作ったカラムに DB の型情報はありません。 次の例をご覧ください。スキーマに日時型で定義されている created_at カラムは TimeWithZone オブジェクトが返るのに対し、AS 句で作った latest_created_at カラムは文字列が返されます。 > Foo.select('created_at').first.created_at Foo Load (0.2ms) SELECT "foos"."created_at" FROM "foos" ORDER BY "foos"."id"…
フラッシュメッセージとは こんにちは!大ちゃんの駆け出し技術ブログです。 ユーザー側の入力に基づいて処理が行われた際に、その処理の結果をユーザー側にわかるように表示されるメッセージのことです。例えば、アカウント登録、アカウント情報の更新の処理などに使用されています。 実装はさほど難しいものではありませんので、仕組みをしっかり理解しておきましょう。 実装方法 本記事ではアクションコントローラーでユーザ登録機能を実装することにします。 登録フォームは下の画像のようなシンプルなフォームです。 登録ボタンを押すことで新規登録のアクションであるcreateアクションが実行されます。 (フラッシュメッセー…
簡易的なログイン機能を実装していたのですが、所詮は簡易的。フレームワークとかに任せるのが効率的です。 そこで見つかったのがdeviseというgemです。 deviseとは 認証系のアプリに必要な機能を盛り込んだ優秀なgemです。 ログイン機能 ユーザー登録 登録時のメール送信、本登録 パスワードを忘れた際の再登録 等々を使用できるようになります。 現在導入中で色々と四苦八苦しているので、 導入についてはQiita等の優秀な記事を確認ください。
rubyweekly.com Highlights Adornable: A Way to Use Decorators on Ruby Methods 自分が認識してるデコレータとはかけ離れすぎていて使い道が見えない。 Articles & Tutorials 3 Tips to Tune Your VCR in Tests 不要な cassette を特定しやすくしてくれる vcr 設定。これ設定してみたいかも。 Don't Wrap Instance Variables in attr_reader Unless Necessary 外から呼ばなくていいインスタンス変数は attr_re…
ゴッドフィールド面白いですね。 さて、今回はRailsでのエラーメッセージの日本語化です。 Railsのデフォルトでは、エラーメッセージは英語で表示されます。 対応 Gemfileに以下を追加し、bundle installする gem 'rails-il8n' config/application.rbのclass Application内で以下を設定する config.il18n.default_locale = :ja config/localesに以下のファイルを作成する ja.yml ja.ymlを以下のとおり設定し、日本語化 以下はUserモデルを日本語化対象とした場合 ja: a…
何故なんでしょうね 結論 form_withのlocalオプションをtrueにしてなかったのが原因でした。 どうやら、local:trueを指定しないとajax通信が発生するとのこと。 元々form_tagでやっていたのですが、非推奨だということを知り、form_withにしたら悲惨なことに。 まあええわ。
おはようございます。 ActiveRecordでSelectする際の現時点でのまとめです。 find_by find_byの引数で指定した条件でヒットした最初の1件を返す。 1件だけ取得ではなくて条件にヒットした最初の1件を返す。 普通に1件だけ取得だと勘違いしていました。 where 条件にマッチしたデータを取得。 SQLのWHERE句のこと? NOTやANDもセットできるらしいけど現状まだ必要に迫られていないのでこのあたりで。 現状必要となっているのがこのあたりなので、まとめはおわり。
railsでmigrationファイルのdefaultについて調べてもあまり明確なものがなかったため記録しておきます。 def change create_table :users do |t| ## Database authenticatable t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent…
こんにちは、READYFORバックエンドエンジニアの森です。 花粉症シーズンの到来と共に、リモートのありがたさを感じています。 READYFORでは昨年約1年かけて、実行者さんの利用するプロジェクト管理画面のうち、プロジェクト編集画面のリニューアルを行いました。 この記事では、約1年に渡るリニューアルを、3つのチャレンジと共にダイジェストでお送りします。
はじめに こんにちは!大ちゃんの駆け出し技術ブログです。 本記事では複数のページで共通のファイルを利用するための機能であるパーシャルについて解説をします。 基礎編を学習していた時のメモを見つけたため、初学者向けに記事を作ろうかなと思ったためです。 では早速見ていきましょう。 パーシャルとは Ruby on Railsでは度々目にするパーシャルですが、一体どのようなものでしょうか? Rails学習の初期段階では、「複数のページで同じレイアウト部分のファイルを共通化する方法」と説明されることが多いかと思います。 例えば、簡単なタスク管理アプリがあり、中に新規タスク登録ページとタスク編集ページがある…
2021/02/25分のコミットです。 CHANGELOGへの追加はありませんでした。 execute yarn executable using current ruby interpreter railties/lib/rails/tasks/yarn.rakeの修正です。 bin/yarnをruby経由で実行するよう修正しています。Windowsでも動作するようにする為。 Don't like to add extra models/tables/fixtures, use existing those Active Recordのテストの修正です。 Load timesetamps o…
はじめに Docker-composeでRail環境を構築してみようとした時に行った作業用メモです。 逐次アップデートしていく予定です。 参考 youtu.be www.techpit.jp 基本操作 イメージのビルド docker-compose build コンテナの作成と起動 docker-compose up -d Dockerfileを更新した時に再度ビルドを行う場合 docker-compose up --build コンテナを停止・削除 docker-compose down その他よく使う操作 コンテナの一覧を表示 docker-compose ps ログを表示 docker-…
基本的に Rack サーバの Worker 数と同じにするべき。 qiita.com Puma Web サーバーを使用している場合は、pool 値を同等の ENV['RAILS_MAX_THREADS'] に設定することをお勧めします。複数のプロセスを使用している場合は、各プロセスに独自のプールが含まれるため、ワーカープロセスが ENV['RAILS_MAX_THREADS'] を超えない限りはこの設定で十分です。 devcenter.heroku.com heroku くんもこう言っとる。 基本的に default に当たり障りない値を書いておき (これ今も初期化時に記述されるんでし…
タスクモデルの作成 rails g model Task name:string description:text マイグレーションファイルが作成される。 ->create db/migrate/20210225083532_create_tasks.rb マイグレーションを実行 bin/rails db:migrate Postgresqlにログイン psql アプリ名_development ログイン後\dtでテーブル一覧を表示
r7kamuraと言います。2020年9月頃からANDPADの開発に参画しています。 2021年2月、ANDPADで利用しているWebアプリケーションフレームワーク Ruby on Rails (以下Rails) のバージョンを5.2から6.0にアップグレードしました。今後アップグレードを行う方が同様の作業を行えるよう、今回の変更に伴い必要となった作業について、あらためて言語化してこの記事で共有できればと思います。 全体の流れ 大まかに分けると、今回は次のような手順で作業を進めていきました。 Rails 5.2系の最新のバージョンに上げる Rails 6.0版のブランチを用意してテストを通す …
2021.2.25 *gemを使用して、font-awesome、bootstrapをそれぞれインストール後、使用できるように設定 バージョンはこのサイトで調べられる。 RubyGems.org | your community gem host <font-awesome5(最新版対応)> (Rails5に導入するとき) ❶ Gemfileにgemを追加する。 (Gemfile) gem 'font-awesome-sass' バージョン ❷ bundle install を実行する ❸ (app/assets/stylesheets/application.scss)に@importで追記…
初心者ということもあり、用語についても調べてアウトプットしていきます! 初心者の同志の方の勉強の一助になれれば幸いです♪ それでは頑張っていきましょう 多対多のアソシエーション タスクにお気に入り機能を付けたい! 多対多のアソシエーションを実装していきます。 最初に完成形を示します。 user.rb has_many :tasks, dependent: :destroy has_many :favorites, dependent: :destroy has_many :task_favorites, through: :favorites, source: :task task.rb ha…
こんにちは、カミナシの@tomiです。 開発環境で送信したメールを確認するためにMailHogを導入してみました。 MailHogとは送信したメールをブラウザで確認できるツールです。 導入のきっかけ 以前、Ruby on Railsで開発している際に、letter_openerという送信したメールをブラウザで確認できるgemを使っていて、メール周りの開発が捗りました。 Golangでもメールが送信されたかを確認する方法を探してたらMailHogというツールを見つけたので、とりあえず導入してみました。(勝手にプルリクを出した) 導入方法 導入はとても簡単で、 公開されているDockerイメージで…
※ この記事は「Railsのリファクタリングに立ち向かうための教科書」シリーズの最終章になります(5/5) 【序章】 問題はどうして起こるのか ~ 方針とアーキテクチャについて 【第1章】 ModelとServiceを紐解く 【第2章】 ApplicationServiceの導入 【第3章】 マイクロサービスを見越した実装 ★【最終章】 リファクタリングを通してチームを強化していく ここまで読み進めていただき、誠にありがとうございます。最終章となる今回は、まとめとして、簡単にですがリファクタリングを通してどうチームが変わっていくかというところを書きたいと思います。 開発速度があがる、レビューの…
はじめに こんにちは!大ちゃんの駆け出し技術ブログです。 1日空けてしまいましたが、本日はリクエストスペックの記述方法についてまとめていきたいと思います。 先日出した記事ではAPIの概要などを簡単に紹介しました。 sakitadaiki.hatenablog.com 本記事ではいよいよリクエストスペックを書いていきます! テスト内容は前回の記事の中で紹介した『ログインユーザーの情報にアクセスできること』です。正しいパラメータを入力した上で、POST形式でlocalhost:3000/api/v1/authenticationにアクセスすると下記JSON形式の情報が取得できことを検証します。 {…
2/22行ったこと レスポンシブ対応・フィードバックを受けての改善…4時間 👉6割進んだ😍 2/23行ったこと レスポンシブ対応・フィードバックを受けての改善…7時間30分 👉アプリが一旦できた😍 READMEの修正...4時間 👉文章の部分が9割できた。 2/24行ったこと READMEの修正…5時間 👉文章の残り1割と、画像等の添付。完成した😍 企業に応募 新しい発見 cssについて cssについて、カンマとスペースの違いがわかった。カンマは同じように他の要素にも適用となり、スペースはその配下の要素に反映されると理解。 CSSの複数セレクター表記に、「,で区切る」「半角スペースで区切る」「…
下記ツイートを見て改めて考えてみました。 更新系APIでDBトランザクション張る時、対象のリソース群の親となるリソース(大抵はUser)を無条件で最初にロックする手法が当たり前だと思っていたけど、もしかして世間ではそうではないのかな...デッドロックリスクを忘れられる大きなメリットがあると考えていたんだけど。— やまでぃ🤗 | YOUTRUST (@aiueo4u) 2021年2月16日 並行に書き込みをどのように処理するかという点も含めて整理してみました。 並行性の問題一覧 名称 内容 ダーティリード あるクライアントが他のクライアントのまだコミットされていない書き込みを見ることができる。 …