→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導入してホッとしたのも束の間、メール送信→認証を導入したので備忘録として残します。 盛大に間違っているかもしれませんが、気にしてはいけない。 ちなみに今回は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…
はじめに こんにちは!大ちゃんの駆け出し技術ブログです。 以前、バリデーションヘルパーであるnumericalityについて記事を書きました。 sakitadaiki.hatenablog.com このバリデーションはRUNTEQのカリキュラムの応用編で使用したのですが、実際調べればすぐに導入できたバリデーションです。ですので、応用編カリキュラムを修了していたのでそれなりの知識があるだろうというおごりがあり、バリデーション自体は割と調べればすぐに出てきて導入できるのでわざわざ記事にする必要がないんじゃないの?と思っていました。 しかし、先日numericalityについて記事を書いているときに…
Railsの話。Hashは[]で値が取り出せる pry(main)> p = {a: {b: :c}} pry(main)> p[:a][:b] => :c Hashの構造が定まってなくて、求めている構造のときのみ値を取得するケースを考える 例えば信用できない外部APIのレスポンスをパースしたり、ユーザーがPOSTするデータ*1をパースするケースが該当する。 []だと発生する問題 pry(main)> p = {} # p = {a: {b: :c}}を期待しているが実際は {} が来た => {} pry(main)> p[:a][:b] # NoMethodError: undefined…
「has_secure_passwordを使ってパスワードハッシュ化するぞ~」とウキウキだったのも束の間、以下のエラーが発生しました。 cannot load such file --bcrypt なんじゃこりゃ!と調べてみると同じ事象の方が結構いらっしゃるらしいですね。 どうやらGemfileに指定したbcryptのバージョン指定が古かったのが原因っぽかったです。 なので、 1. gem uninstall bcrypt 2. gem uninstall bcrypt-ruby 3. gem install bcrypt --platform=ruby 4. Gemfileで指定したbcry…
タイトルがYoutuberっぽいですね。 備忘録です。 ActiveRecordの詳しい説明はQiitaとかの記事見たほうがいいので、ここでは説明しません。 使ってみた感想を書いていきます。とは言っても初心者レベルの知識しかないので浅い内容になりますが・・・ INSERTがかんたん! 通常SQLを記述する場合、以下のようになると思います INSERT INTO HogeTable VALUES (name: hoge) ActiveRecordを使うと以下のように書けます hoge = Hoge.new(name: 'hoge') hoge.save プログラムを書くようにインスタンス化して使…
前回、こういう記事を書いてました。 patorash.hatenablog.com Mackerelにテーブル数、カラム数、コメント数を表示できるようにしたわけですが、カラム数に対してコメント数が0でこれから全部やっていくの辛い〜😇と思っていたのですが、ふと、I18nから引っ張ってくれば、特別な経緯のないやつはコメント付けられるんじゃないか?と思いつき、早速やってみました。 マイグレーションファイルを作る とりあえず生成します。 bin/rails g migration AddColumnCommentFromI18n 書いていく gistから貼り付けておきます。I18nの定義が存在したら、…
CTO 室 SRE kenzo0107 です。 以前執筆した ECS を利用した検証環境の自動構築について、運用開始から3年の時を経ました。 実運用とその上で頂いた要望を取り入れ変化してきましたので、その経緯を綴ります。 tech.medpeer.co.jp 本稿、議論を重ね改善を進めて頂いたチームメンバーの知見を集めた元気玉ブログとなっております。 前提 社内では、以下の様に呼び分けしています。 本番相当の検証環境を STG 環境 本記事で説明する自動構築される仕組みを持つ環境を QA 環境*1 検証環境の自動構築の目的 開発した機能を開発担当者以外でも簡易的に確認できる様にし、以下を促進し…
※ この記事は「Railsのリファクタリングに立ち向かうための教科書」シリーズの第3章になります(4/5) 【序章】 問題はどうして起こるのか ~ 方針とアーキテクチャについて 【第1章】 ModelとServiceを紐解く 【第2章】 ApplicationServiceの導入 ★【第3章】 マイクロサービスを見越した実装 【最終章】 リファクタリングを通してチームを強化していく 前回までで、おおよそ価値のあるリファクタリングが行えるだけの知識は習得できたものと思います。この章ではさらにそれを発展させ、ヘキサゴナルアーキテクチャからport/adapterという概念を用いて、マイクロサービス…
どうもラクママンです。 使ってないものを金にすべくせこせこ出品してます。本当は引っ越す前に終わらせるつもりだったけど働いてるとリフレッシュで精一杯でしたね さてProgateのRails IIIです。 投稿ページの作成 前回のactionとデータベースを利用してWebページにレコードの特定の値を表示させる機能を使って投稿をできるようにする モデル名.find_byメソッド テーブルから目的の値を持ったレコードを持ってきてくれる 変数に代入して欲しい条件の欲しい値を使ったりなどに利用する routingのURLにidを含める routingにget 'post/:id' => 'post#det…
brewでなんかメッセージが出る; % brew -v Ignoring eventmachine-1.2.7 because its extensions are not built. Try: gem pristine eventmachine --version 1.2.7 Ignoring ffi-1.11.1 because its extensions are not built. Try: gem pristine ffi --version 1.11.1 Ignoring http_parser.rb-0.6.0 because its extensions are not b…
環境変数を .envrc ファイルに書いて読み込ませるdirenvがあるがこれをサポートするIntellij IDEA系のプラグインがほとんどないのでうまいやり方を考える。Direnv Integration はあるが.envrcファイルを新規作成したときしかうまく動いてないぽいのでちょっと様子見。 github.com Railsプロジェクトでやったが、Javaでも使えると思う。 手順 .envrc ファイルを作成する。この時点で テスト用 の設定ファイルを書いておく。例えば export foo=test と書く。 ターミナルを開いて idea コマンドで起動する。この時点でIDE には環…
こんにちは。しおはまです。 今回はページネーションを実装するのに便利なGem(kaminari)の基本的な使い方をまとめてみます。 ページネーションとは よくブラウザとかで見るこれです。(下記の画像を参照) 検索結果が多くなり、1ページに収めようとするとUI的に見にくい場合なんかにページネーションは使用されていますね。 または、掲示板アプリなどでたくさん記事を投稿すると、古い記事がどんどん下のページにいってしまい、見にくくなりますよね。 そんな時、ページネーションを実装し、ページを分けることで見やすくなります。 そこで、RailsのGemで簡単にページネーションが実装できるkaminariとい…
キーワード: ブラウザ、自動更新、自動読み込み、オートリロード、ライブロード railsで開発しているとき、ファイルに変更があるたびに手動でブラウザの更新ボタンを押さなきゃいけないのはダルいので、自動で再読み込みしてくれるようにした。 Browsersyncというnpmパッケージを利用します。 環境 mac bigsur Rails 6.1.3 npm 7.5.3 インストール Browsersyncのインストール; npm install -g browser-sync -g オプションはグローバルにインストールするということらしいです。 設定ファイルなしで実行 まずはサーバーを立てます; …
今回は、Railsのリファクタリング手法を紹介しようと思います。これまで私自身数仕事として数多くのリファクタリングを手伝わせていただいてきましたが、基本的に方針としては毎回ほとんど同じことを実践しています。ですので一度、どう進めればよいのかということを教科書的にまとめておきたく思います。Railsのアプリケーションのコードが汚い、追加開発が辛い、誰もコードを説明できないなどで困っているという方、アーキテクチャについて真剣に考え始めた方の一助になれますと幸いです。 アジェンダとしては、全5回の章立てで下記のように進めていこうと思います。 【序章】 問題はどうして起こるのか ~ 方針とアーキテクチ…
Progateはじめて、1ヶ月くらいたったかなぁ まだRuby on Railsやってます。 平均して 1日2時間ぐらいかな?休日はほぼできないし。 この前、 まだ勉強し始めたばかりだから (自分が合ってるなんて思わないから) アプリのバグだって気付くのに時間掛かって 4回くらい同じところ、やり直したりしてました。 やっと7くらいまできたかな? 最初の頃は小刻みに復習してたんだけど 感覚的にわかることが増えてきて 曖昧なまま、どんどん進めてたんだけど これじゃ行かんなとまた復習にもどってきた 分からないことがわからない だったことが ここがわからない!に変わってきたし あー、なるほど。このこと…
拙作のgem、omniauth-lineを更新しました。 github.com 理由としては以下のPRの通りで、omniauth-oauth2の方の更新でcallback_urlメソッドが無くなってしまったので継承してるこっちのクラスで実装する必要ができた感じです。 恥ずかしながらcallback_urlメソッドが無くなった経緯は存じ上げません。。。。 github.com ぶっちゃけ自分はもうこのgemを使ってないどころかRubyすらここ2~3年書いてない状態で、gemの更新もサボっていました。ただ、全く動かなくなるとか、セキュリティ的に問題があるgemに依存してるとかは流石に放置するわけに…
GitLabをOmnibusインストーラーでインストールし、最初にGitLabにブラウザでアクセスするとパスワードの変更を求められます。 このユーザーが「誰?」という話。特に名前も表示されていないのでわからないし、なにより忘れるのでメモしておこうかなと。 正体は、rootユーザーです。 ドキュメント上、記載がない気がするのですが…ここくらいでしょうか? To reset the default admin password, run this Rake task with the username root, which is the default username of that admi…
こんにちはkokoaです 本当におすすめのプログラミング学習サイトをみつけてしまいました..... それは"プロゲート"です このサイトは動画ではなく、スライドでまず画像を見てからサイト内でプログラムを実行できます!! 本来ならまず環境構築と呼ばれるプログラミングをできる環境をセッティングしてからじゃないとプログラムを実行できません しかも!!レッスンが豊富です Java,JavaScript,jQuery(JavaScriptのライブラリ),Ruby,Ruby on rails(Rubyのフレームワーク),PHP,Python,ターミナル(プログラミング言語ではないよ説明は割愛),Git(共…
はじめに こんにちは!大ちゃんの駆け出し技術ブログです。 今回はタイトルにもある通り、リクエストスペックについて書きたいと思います。 しかし、リクエストスペックを説明するためにはAPIの説明が必要不可欠となるため、今回はAPI情報の取得方法、次回はAPI情報が取得できているかをテストするリクエストスペックという感じで2回構成で説明していきたいと思います! 他のテストタイプとの違い 「リクエストスペックってなんぞや?」 自分も最初はこんな感じでした。 自分がRSpecを学習する上で1番最初に学習したのはそのモデルをテストするモデルスペックです。主にテストの検証内容はそのモデルのバリデーションが効…