You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
読書好きの方向けの引用共有サービス「引用箱」をリリースしました 引用箱のサムネイル画像 引用箱 QuoteList はじめに LEF(@lef237)と申します。読み方はレフと申します。2022年からフィヨルドブートキャンプという学習コミュニティに入会し、Web開発の基礎的な部分から順番に学習しておりました。 このたび、ずっと開発を続けていたWebアプリをリリースしました。 名前は「引用箱」というサービスです。 「未知の書籍と出会うきっかけとして、既読した人による書籍の引用から、気になる書籍を探したいが、引用が集まっている場所がない」 という問題を解決するために作った、読書が好きな人向けの引用共有サービスです。📚🔍 ユーザーは書籍の引用を記録することができ、Kindleの共有機能とは違って、自分以外の人の引用記録も見ることができる点が特徴です。 前半ではこのサービスの概要や使い方を、後
PWAとは? PWAとは、「Progressive Web Apps」の略称で、PCやスマホでWebアプリを表示する際に、ネイティブアプリのような動作を可能にする仕組みのことです! PWAを導入するメリットとして OSによる制限がないこと プッシュ通知を送ることができること ホーム画面にアイコンを設置できること Webアプリ上でキャッシュを使用でき、ローカルのキャッシュに保存できるため、再びアプリを開いた際の読み込みのスピードが従来よりも速くなること などが挙げられます! 実装 まずは、app/views/layouts/application.html.erbに以下のように2箇所追記します! <!DOCTYPE html> <html> <head> <title>Example</title> <%= favicon_link_tag('favicon.ico') %> + <link
Ruby on Railsの作者として知られるDavid Heinemeier Hansson氏は、コンテナ・デプロイ・ツール「Kamal 1.0」を9月19日(現地時間)に公開した。同氏は開発したWebサービスをクラウド・プロバイダーから自前のサーバーに移行する手続きを進めており、Kamalはその手続きの中で生まれたという。KamalはMITライセンスで公開しているオープンソース・ソフトウェア。 Kamalは、Dockerでコンテナ化したアプリケーションを配備するツール。設定ファイルに外部の公開IPアドレスを記入して起動すれば、Linuxが動作するコンテナが動き出す。このコンテナにはSSHで接続することも可能だ。 Hansson氏はKamalをWebアプリケーションをクラウドから自前のサーバーに移す目的で使用しているが、クラウド間での移動など、ほかの目的にも利用できる。Kamalを利用す
開発合宿運営チームの id:yutailang0119 と id:maku693 です。はてなでは四半期に一度、技術グループ主導で開発合宿を開催しています(過去の合宿の様子は「開発合宿」カテゴリーにまとまっています)。 2023年4月に実施した開発合宿では、参加者が複数のチームに分かれ、それぞれ異なるプログラミング言語で同じお題のWebサービスを開発しました。言語ごとの特性を比較し、今後の技術選定に生かす取り組みです。 この記事ではその開催レポートをお届けします。 開発言語の特性を理解したい さまざまな技術要素を2日で実装できるお題に 参加チームやコミュニケーションでの工夫 順調に開発が進んだ合宿当日 技術勉強会で「成果物を見る会」を実施 開発合宿を終えて プログラミング言語ごとの使用ライブラリ TypeScript Go Ruby Scala 開発言語の特性を理解したい はてなではたくさ
この記事は何 以前Qiitaで以下のようなRubyで仮想DOMを扱う方法を記事にしました。 これらで紹介した仮想DOMを使って、Brainf*ckのインタプリタを作ってみたのですが、簡単なプロトタイプを作るのにはかなり便利なことが改めて実感できたので、せっかくなのでライブラリとして公開してみました。 この記事では作成したruby-wasm-vdomについて紹介していきます。 ruby-wasm-vdomとは ruby-wasm-vdomは、文字通りRubyで仮想DOMを扱えるようにするためのライブラリです。 以下のような感じで仮想DOMを全てRubyのみで書くことができます。 <html> <head> </head> <body> <div id="app"></div> <script src="https://getty104.github.io/ruby-wasm-vdom/ind
Rails on Docker Author Name Brad Gessler @bradgessler @bradgessler Image by Annie Ruygt Rails 7.1 is getting an official Dockerfile, which should make it easier to deploy Rails applications to production environments that support Docker. Think of it as a pre-configured Linux box that will work for most Rails applications. That means you’ll start seeing a Dockerfile in the project directory of a lo
はじめに 「Railsは関心の分離が不十分である」という批判をよく目にします。状況が深刻になったら、Railsに足りない別のピースを導入しなければならないというのです。しかし私たちはそうは思いません。 「素のRails(vanilla Rails1)ではここまでしかできない」みたいな批判を耳にすることがよくあります。Railsはアーキテクチャレベルで関心の分離が不十分なのだから、アプリはいずれメンテナンス不能になり、足りないピースを導入するという別のアプローチが必要になるというのです。 代表的なDDD(ドメイン駆動開発)書籍では、概念上の4つの層である「プレゼンテーション層」「アプリケーション層」「ドメイン層」「インフラストラクチャ層」について議論しています。 アプリケーション層は、ドメイン層と協調動作してビジネスタスクを実装します。しかし、Railsが提供しているのは「コントローラ」と「
JWTはtokenというキー名でCookieに保存する JWTの署名アルゴリズムはRSA256を利用する JWTのエンコードでは事前に作成したRSA暗号の秘密鍵を利用する JWTにはユーザーIDを保存する JWTの有効期限は14日とする 下準備 ユーザーの作成 認証対象のユーザーを作成します。ActiveModel::SecurePassword::ClassMethodsのドキュメントに従い、has_secure_passwordでパスワード管理されたデータを作成します。 Gemfile gem "bcrypt" ### モデルのマイグレーション $ rails g model user name email password_digest $ rails db:migrate user.rb class User < ActiveRecord::Base has_secure_pass
scaffold で User Model と Controller を作ります。 lock_version というカラムを追加すると Rails で楽観ロックを実装してくれます。便利ですね。 $ cd yourappname $ rails g scaffold User name:string \ email:string \ role:integer \ password_digest:string \ register_user:integer \ update_user:integer \ lock_version:integer \ activated_at:datetime \ deleted_at:datetime User.create!([ { name: 'admin', email: 'admin@example.com', role: 'admin', passw
Rails で Web アプリを作成・運用していく中で、個人的に導入して良かった設計や gem を紹介していきます。 なお、本記事では特定のユースケースに絞った話ではなく、比較的どの Rails アプリでも利用できるような内容を書いていければと思いますので、参考になれば幸いです。 Form オブジェクト 基本的には Rails Way、MVC と Rails 標準機能に沿った設計でシンプルに保つようにしてますが、Form オブジェクトについては導入しています。 特定のユースケースの処理(ビジネスロジック)をモデルから分割する目的で使用し、今回は自分がよく利用する ActiveRecord モデルを継承する方法を紹介します。 下記のようなイメージになります。
第1章ゼロからデプロイまで はじめに 1.1 前提知識 1.2 さっそく動かす 1.2.1 開発環境 1.2.2 Railsをインストールする 1.3 最初のアプリケーション 1.3.1 Bundler 1.3.2 rails server 1.3.3 Model-View-Controller(MVC) 1.3.4 Hello, world! 1.4 Gitによるバージョン管理 1.4.1 Gitのセットアップ 1.4.2 Gitのメリット 1.4.3 GitHub 1.4.4 ブランチ、編集、コミット、マージ 1.5 デプロイする 1.6 最後に 1.6.1 本章のまとめ 1.7 本チュートリアルで用いている表記の慣習 第2章Toyアプリケーション はじめに 2.1 アプリケーションの計画 2.1.1 ユーザーのモデル設計 2.1.2 マイクロポストのモデル設計 2.2 Usersリソ
RailsチュートリアルからRails 7 対応のWebテキストをリリースしました 🎉 本記事では Rails 7 対応版 (第7版) の主な変更点をご紹介しています 💁♀️ ※ Rails 7 対応の解説動画も準備が整い次第、順次リリースされる予定です。まずはWebテキストのみ一足早くリリースしています 🚀✨ ⚖️ 第6版と第7版の違い大前提としてWebテキストのFAQページで予告していた通り、学べる内容の大枠は第6版と大きく変わっていません。すなわち、テストやGit/GitHub、MVCやRESTful、SessionとCookie、暗号化とハッシュ化、メールを使ったアカウント認証など一連の学べる内容は第6版と同じです。 WebテキストFAQに書いてあった第7版に関する予告説明学べる内容の大枠にあまり変わりはありませんが、学習者の躓きやすい点の改善と、学んだことを次に繋げやすく
NaClの前田です。 Ruby Advent Calendar 2021の20日目の記事です。昨日は@getty104さんでした。 今回はRuby 3.1にするっと入ってしまったHashの値の省略記法を紹介します。 導入の経緯 最初の提案のきっかけは、何かでES6のenhanced object literalsを知って、2015年にFeature #11105 ES6-like hash literalsというチケットを作成したことでした。 この提案は、 {x, y} が {x: x, y: y} とみなされるというもので、ES6と同じ記法です。 ただ、HashというよりSetに見えるという理由で却下されました。私自身、すごくほしいというよりは「実装できたから提案してみるか」という感じだったので、あまりがんばって説得しなかった気がします。 次の提案は2018年のFeature #1457
Rubyの静的コード解析をやってくれるRuboCopをRails開発に導入しました。そこで発生したAbcSizeチェックについての作業メモ。 AbcSizeとは 実装したメソッドに対してRuboCop君が計算してくれるスコア。 以下の3つのカウントが評価対象。 Assignment : 代入 Branch : メソッド呼び出し Condition : 条件 デフォルトで15を超えると警告が出て、もっとスコア下げてねと言われる。 警告が出たメソッド ユーザーのサインイン機能を担う、こちらのSessionsController.create。 def create @user = User.find_by(email: params[:session][:email].downcase) if @user&.authenticate(params[:session][:password]) #
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Thinking in Hotwire: Progressive Enhancement | Boring Rails: Skip the bullshit and ship fast 原文公開日: 2022/08/16 原著者: Matt Swanson サイト: Boring Rails 日本語タイトルは内容に即したものにしました。 Turboについては以下の記事もどうぞ。 参考: 猫でもわかるHotwire入門 Turbo編 Hotwireを始める方法や個別のパーツの利用法を学べるチュートリアルはたくさんあります。しかし私は「Hotwireで考える」コツを会得するのにしばらく時間がかかりました。 Hotwireそのものは「HTML-over-the-wire」という包括的なコンセプトに過ぎず、以下のような部品をいつどのように
https://rconv.ongaeshi.me Ruby on Browser に続いて Ruby WASM/WASI で電卓っぽいものを作りました。 ongaeshi.hatenablog.com テキストボックスの内容を入力としてRubyスクリプトに渡して評価し実行結果を出力します。つまり入力→変換→出力するRubyアプリケーションがブラウザ上で簡単に作れます。コードはURLに記録されるので簡単に共有することができます。 基本 Rconv.set()メソッドに渡したブロックの中身が変換プログラムになります。ブロック引数に渡されるのはテキストボックスの内容がevalされたものです。Always string = true のときは常に文字列になります。ブロックの戻り値、もしくは標準出力に何か出力されたときはその内容が、そうでないときはブロックの戻り値が出力されます。 例えば irb
新しいデバッガに乗り換えてデバッグプロセスを変更するのがつい億劫になることもあるでしょう。本記事によって、皆さんがruby/debugに親しんでスムーズに移行する助けになることを願っています。 以下、debugはruby/debugを指します。 免責事項 著者はdebugと比べてbyebugの経験があまりありません。不正確な情報や古い情報がありましたらぜひお知らせください。 本記事の目的は高度なレベルで比較を行うことです。debugの特定の利用方法については公式ドキュメントを参照してください。 本記事はすべての機能を網羅しているわけではありませんが、ほとんどの機能をカバーしているはずです。 🔗 debugを使うメリット 個別の機能を解説する前に、debugを使うメリットについて簡単に触れておきたいと思います。 1. 出力がカラー化されている 2. メソッドやブロックの引数をバックトレース
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く