→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
業務でRailsアプリを作る場合、処理負荷的にも転送量的にも重い画像等は、CDNから配信するようにすることは、最早当たり前といって良いと思います。 最近は CDK によって簡単にCloudFront Distribution設定を維持管理でき、さらに ActiveStorage 等、Rails側の機能改善もあって以前に比べて、簡単に、レールから外れない範囲で書けるようになりました。 今回は以下のような構成で、CloudFront 経由での配信によるエッジキャッシュの利用を実現する方法について紹介します。 構成イメージ ActiveStorageで添付したファイルやオンザフライ変換( varia…
Rails 6.1 の新機能 rails_storage_proxy_url を使うと、ActiveStorage で添付したファイルへのリンクが署名付きURLへのリダイレクトにならず、RailsアプリのURLのままファイルをダウンロードできるようになります。 どういうこと? ActiveStorageはこれまで、S3をバックエンドとして使った場合、S3への署名付きURL=タイムスタンプなどが付与されたURLへのリダイレクトを行ってきました。 しかしこれは扱いづらいことも少なくなく、悩みの種の1つでした。 Rails 6.1 でこの問題に対する回答が(ようやく)公式に用意されたことになります。
こんにちは。 本記事は、プログラミング言語「Ruby」のフレームワーク「Rails」でよく利用するメソッド、「before_action」について解説致します。 【目次】 例題 解説 補足 まとめ 例題 before_actionメソッドを使った例として、次のコードをみてください。 ```Rails(Ruby) 1 class ApplicationController < ActionController::Base2 before_action :configure_permitted_parameters , if: :devise_controller?34 def configure…
副題:CircleCIでdocker-composeを使うのをやめた。 1年前くらいには、CircleCIでdocker-composeを動かす方法についての記事を書いてた。 patorash.hatenablog.com しかし、これが遅い。まぁ自分のやり方が悪いというのはあったのだけれど。ライブラリのキャッシュを1コンテナでやってから、次のジョブで複数コンテナに配布するようにしたほうが無駄がなくていいかなと思って、そうしていたのだけれど、docker-volume内にあるからキャッシュするためには一旦取り出さなければならないし、キャッシュを反映するにはdocker-volume内にインポー…
独習Ruby on Rails 現場で使える Ruby on Rails 5速習実践ガイド と続けて読んだので、そのままパーフェクトRuby on Rails増補改訂版を2章〜3章読んだ。 パーフェクト Ruby on Rails 【増補改訂版】作者:すがわら まさのり,前島 真一,橋立 友宏,五十嵐 邦明,後藤 優一発売日: 2020/07/25メディア: Kindle版 Rails本2冊読んだばかりなので、知ってる箇所を飛ばして、知らないところについてまとめた。 2章 ActiveRecord::Relation ActiveRecord::Relationは内部でどのようなSQLを発行す…
実現したい内容 ER図 Embedモデルにenumを設定する embed_typeのプルダウン選択 Embed用のURLに変換 Twitterの埋め込み表示 FontAwesomeのfaviconを指定 実現したい内容 ブログアプリに投稿する記事にメディア(YoutubeとTwitter)を埋め込めるようにする 埋め込めるメディアとしてYouTubeかTwitterをプルダウン選択出来る Twitterを選択し、適切なURLが入力されたとき、ツイートが表示されるようにする Youtubeを選択し、適切なURLが入力されたとき、動画が表示されるようにする 埋め込まれた記事ブロックのヘッダーアイコ…
実装したい内容 アクティブストレージ 画像の表示サイズの設定 Imageカラムの追加 バリデーションの追加 フロント周りの修正 controllerの修正 画像の位置の設定 image_alignカラムの追加 enumの設定 フロント周りの修正 controllerの修正 実装したい内容 画像サイズ(横幅)を指定できるようにし、指定サイズで表示させる 画像の横幅は100px〜700pxにする 横幅が100px以下または700px以上ならば、バリデーションエラーを発生させる 画像の表示位置を「左寄せ」「中央」「右寄せ」から選択出来るようにし、指定の位置で表示させる アクティブストレージ 画像ファ…
今日学んだこと 2021/01/16 学習項目 MVC応用 学習内容 View railsのコントローラーでの処理後、レスポンスでHTMLが表示されるのはAction Viewという仕組みを搭載しているから。 Action Viewとは、ざっくりいうとビューの機能がまとまっているもの これによってビューファイルが見れるようになっている。 注意としては、ビューファイルがそのまま表示されているわけではなく、ビューファイルの内容がAction Viewにまとめられてブラウザに返却されているということ。 また、コントローラーで取得したインスタンス変数はビューファイルでそのまま使えているように見えている…
インストール Gem Policies Controller ControllerとPolicyの挙動 authorizeはchainできる view側の設定 scope NoAuthorizedError rescue_fromメソッド インストール Gem gem "pundit" Policies Punditでは、app/policies配下に×××_policy.rbを作成し、管理する。 docに掲載されている例はこのようになっている。 class PostPolicy attr_reader :user, :post def initialize(user, post) @user…
はじめに はじめまして。株式会社スタメンでエンジニアをしております、永井(@0906koki)です。 以前の記事では、筋トレを週5でしていると書いていましたが、今は週2に減らして体をメンテナンスしています。 今回の記事ではRailsとWebpack、そしてReactを使って、webpack_dev_serverによるHot Module Replacement(以下 HMR)を実装する方法について書きたいと思います。 軽くwebpack_dev_serverとHMRの説明をすると、webpack_dev_serverとはWebpackを利用した開発環境向けWebサーバーで、Webpack管理内…
0. 現象 Ruby on rails のプロジェクトで、dbをマイグレーションかけようと思ったら、下記エラーに遭遇。 $ bundle exec rails db:migrate Could not find ffi-1.11.1 in any of the sources Run `bundle install` to install missing gems. 1. 解決方法 Xcodeのツールをインストールをする。 $ xcode-select --install すると、何やらXcodeのアイコンと利用規約的なポップアップが出るので同意してインストール。 完了してから、 $ gem …
タイトルで全てを語ってしまいましたが、これです。 WSL2でRailsアプリの動作確認をしようとbin/rails sを実行後、 http://localhost:3000 にアクセスしたのですが、何故か表示されず…。pumaも起動していますが、ポートフォワーディングに失敗しているようです。.wslconfigには、LocalhostForwarding=Trueを設定してあるのに…。 ググったところ、close済みのissueにたどり着きました。 github.com このコメントの途中に、「高速スタートアップをオフにしろ」と書いてありました。やり方は以下のサイトにありますが、英語です。 h…
今日学んだこと 2021/01/14 学習項目 オブジェクト指向 正規表現 railsの基本概念 学習内容 オブジェクト指向 アプリケーションを作成するときに、登場する役割ごとに分けて実装する方針のこと設計思想の一つ メリット 実装がしやすくなる 後からコードを改変するときも他のオブジェクトに影響しない 単一責任の原則 アプリケーションの設計を考える上で、必要となる決まりの1つ。 「1つのクラスは1つの振る舞いしか持たない」という原則の下設計をする。 正規表現 文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを調べるための表現方法 例えば、 090-1234-5678 09012…
今日学んだこと 2021/01/13 学習項目 レスポンシブデザイン ruby応用 学習内容 レスポンシブデザイン レスポンシブデザインとはざっくりいうとPC、タブレット、スマホで表示するデザインを変えること。 画面の大きさが違うから、それに合わせないと見づらいから変えようって話ですね。特にPCは横長に対して、スマホって縦長だし。 方法は簡単で、CSSに @media(max-length: 表示を変えたい長さ) { その大きさを指定する .img { width: 50%; } } こんな感じに記述します。この@media.....のことをメディアクエリといい、表示を変えたい長さをブレークポ…
プログラミングを現在、学習しており学習の記録として更新しています。 目的: 今回は、rails generateコマンドを使用した時に、assetsファイル、heplerファイル、testファイル、ルーティングを生成されないようにしたい。 目次: 1. rails generate (g) コマンドとは? 2.rails で使うジェネレーターの設定ファイルの変更の仕方!! 3.最後に 1. rails g コマンドとは? rails newコマンドで作ったRailsアプリケーションの土台に、rails generateコマンドによって中身を加えていくためのもの。 ※目次にあるように、rails…
更新日時 2021/01/20/07:00 Qiita Trends Daily 1位 ※前日8位 JavaScript,GitHub,ランキング,日本語訳,bestofjs Qiita Trends Daily 2位 ※前日1位 SQL,DB,性能,sqlチューニング Qiita Trends Daily 3位 [New] 機械学習,MachineLearning,DeepLearning,ディープラーニング,論文読み Qiita Trends Daily 4位 ※前日3位 JavaScript,ユニットテスト,Jest Qiita Trends Daily 5位 [New] HTTP,ie…
2021/01/19分のコミットです。 CHANGELOGへの追加はありませんでした。 Fix grammar and typos rails guideのWebpackerの修正です。 各項の、グラマー、タイポの修正を行っています。 Fixed multiple enums declaration with prefix/suffix activerecord/lib/active_record/enum.rbの修正です。 複数のenum定義 + _prefix / _suffixオプションを指定した場合にArgumentErrorになってしまうバグがあったのを修正しています。 Merge …
#WBS【スタジオでもマスクを】大江麻理子アナ「WBSでは、今日からスタジオ内でトークをする場合には、お互いにマスクを着用することにしました。(略)緊急事態宣言を受けまして、より一層感染対策を強化する事が必要だと考えての決断です」おっと、ついにテレ東が先陣を切った。 pic.twitter.com/QSrbqz81NF— 自由 (@FreeTweet000) 2021年1月18日 積雪数センチだけど雪かき。— とみたまさひろ🍣🍺 (@tmtms) 2021年1月18日 The MySQL 8.0.23 Maintenance Release is Generally Available htt…
結論 例えば、my_hobbies のようなカラムがあり、配列型で定義されているとします*1。そのようなカラムを含んだテーブルを特に何もせずに embulk-output-postgresql で PostgreSQL に書き込むと、以下のようなエラーが出て怒られます。 org.embulk.exec.PartialExecutionException: java.lang.UnsupportedOperationException: Unsupported type _VARCHAR (sqlType=2003, size=2147483647, scale=0) このとき、当該カラムを {…
新しい年、新しい仕事 2021年になり、転職活動も終わり、縁あって新しく開発の仕事を始めることにしました。 新しい一年、新しい仕事! どんな仕事 仕事の内容は、RailsやNode.jsなどで構成されている自社サービスの開発。 AWSをガッツリ使っている現場で、クラウド周りの知識がこれまで薄かったのでなんとか成果を出せるよう必死にキャッチアップ中。 PHPはそれなりに自信があるものの、RailsもNode.jsもどっちも経験浅かった・・・ 環境構築 今回の現場に入った時に例に漏れず、PCの環境構築を行う機会があったので、Webの開発者は入れるべきな便利ツールを紹介します。 今後新しいmacを設…
【今日の振り返り】 【時間】私の行動の前に時間は平伏すが、結局時間でしか計測出来ない ・7h:睡眠 ・2h:ブログ+思考日誌+Twitter+Facebook+0秒思考 ・1h:Railsアルゴリズム ・7h:AWS試験対策(模擬試験:3.5h、語句解説理解:3.5h) ・2h:転職活動 ・5h:その他(家事) 【行動】今日はどんな遊びをしたのか? 25分間+5分間を確実に守り学習をする。5分間で腕立てを30回を守り16セットをする。 最近、時間を区切らずやっていることに嫌気がさしたので、今日は確実にちゃんと行う。 やはり休憩を挟むことで、かなり改善された学習時間を送ることができると体感。 そ…
どうもこんにちは ヤスケンです!! 今日もプログラミングで学んだことをアウトプットの場として、記録していきます。 今回は、decoraterというソフトウェアのデザインパターンを使って、 webページに現在ログインしているユーザーの名前をフルネームで表示するための実装を行っていきます。 [:目次]①Decoraterとは何か ②使い方③最後に ①Decoraterとは何か ソフトウェアのデザインパターンの一つです。 デザインパターンとは、先人達が開発をしていく中で「よく出会う問題とそれに対する良い設計」のことを言うそうです。 今回の場合だと、viewに表示したいメソッドを追加したいけど、モデル…
% rails g controller 生成するファイル名 で生成します。 コントローラーの規則は、複数形にすることです。 例えばpapersやbooksなどです。 削除する場合は % rails d ファイルの種類 削除するファイル名 を使います。 アクション コントローラー内における、処理のカテゴリーのことです。 index ・・・一覧表示ページを表示するリクエストに対応して動く new・・・新規投稿ページを表示するリクエストに対応して動く create・・・データの投稿を行うリクエストに対応して動く show・・・個別詳細ページを表示するリクエストに対応して動く edit・・・投稿編集…
■解決したいこと 最終課題のユーザー管理機能実装にて、 Deviseの導入をし、userテーブルを作成後マイグレートしたところ、 StandardErrorが出てしまった。 ■自力で調べた内容 エラー内容が「すでにuserテーブルがある」というものだったので マイグレーションの修正方法を確認した。 ■仮説と検証作業の結果 rails db:rollbackを行ない、マイグレーションファイルを修正後にrails db:migrateをしたが解決しなかった。 rails db:migrate:statusをしたところ、usersテーブルのマイグレーションファイルの状態はdownであった。 ■原因 …
こんばんは、Ramrinです^^ 今日はユーザー管理機能の途中までしました。 今日したこと Deviseの導入 Deviseに対応するviewファイルの作成と修正 Deviseの導入時にuserテーブルを作成したのですが、マイグレートが出来ず、 rails db:rollbackをしても治らず、rails db:migrate:statusをしたところ、usersテーブルのマイグレーションファイルの状態はdownのままで、 自己解決が出来なかったのでメンターさんに質問してみました。 結果的には、 datebase.ymlにて adapter: mysql2 encoding: utf8mb4 …
やった〜!!やっとですが、転職に成功(内定をいただけた)いたしました! 概ね予定通りとはいえ、やっぱり1月はコロナのせいもあり肝を冷やしました。 テックキャンプを受講させていただいてから、転職に成功するまで約6ヶ月。 長かったなぁ〜。 と、言う訳で、この半年を振り返ってみようと思います。 ※あまりに長文になったので分けました。こちらは、受講から卒業までの内容です。 7月〜8月中旬:受講のきっかけとテックキャンプ授業開始 プログラミングスクールを受講した経緯 どこでテックキャンプさんの存在を知ったか プログラミングを学ぼうと思った理由 テックキャンプさんと言うプログラミングスクールを選んだ理由 …
railsを用いたオリジナルアプリを作成しています。 <課題> 投稿の一覧表示にBootstrapのcardを用いているため、文字数が多くなると一つ一つのcardの高さが合わなくなってしまう。 それを回避するために、投稿された記事のテキストが一定の文字数を超えるとそれ以降の文字を省略して表示したい。 <解決策> truncateメソッドを使用することで解決できました。 こんな感じです。 ...で3文字取るので、引数に10を指定すると文字列の7文字目までを表示し、 それ以降を省略します。 ちなみに引数に2や3を指定すると... こうなりました。 あまり意味はないですが、気になったので試してみまし…
railsのアプリを作成している中で、正規表現で入力欄にバリデーションをかけていました。 しかし、任意入力欄を空欄でフォームを入力すると ”不正な値です”とエラーメッセージが表示されました。 presence: trueとはしていないのになぜ?と一瞬思いましたが、 正規表現でかけたバリデーションに引っかかっているので当たり前ですね。 ググってみるとallow_blankというオプションにたどり着きました。 これはフォームに入力があった場合のみバリデーションをかけるオプションで 今回はこれがallow_blankオプションが使えそうです。 allow_balnk: true としたらうまくいきま…
はじめまして。Eight Career部のサーバサイドエンジニアをしている大石 奈津子です。 先日、オンラインイベントの Rails Girls Gathering Japan において、スポンサーとしてLTの発表をさせていだきました。 Rails Girls Japanの方々から情熱的なパワーをもらったので、是非イベントの紹介をさせていただきたいと思います。
こんにちは。Railsを普段使いしていて、想定しない挙動をしたり/この挙動は不具合ではないかと疑うことがあるかと思います。 今回enum関連の不具合報告をしました。本記事では、バグレポートの書き方と実際に報告した不具合の内容を説明したいと思います。 バグレポートの書き方 バグレポートは、基本的に Rails Guide の Creating a Bug Report に沿って報告するのが良いです。 付け加えると、実際に再現するようなRailsアプリや再現コードがIssueに記載出来るとベストです。 私が実際に挙げたIssueはUse non-exist enum string to get u…