the lite-ist stack: rails, sqlite, litestack, litestream, and fly one of my favorite technologies is sqlite. it lets us build apps with fewer dependencies and less devops, which i love. you can run it in memory to create db-backed ruby scripts in a standalone file. i’m a fan of sqlite’s origin story (i started my career working for the navy and dod). i get an irrational kick out of being able to s
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: For clarity merging hashes use with_defaults - Andy Croll 原文公開日: 2023/11/20 原著者: Andy Croll Railsは、可読性を高めるためにActive Supportで既存のコアRubyクラスに多くのメソッドを追加することで知られています。Hashクラスのwith_defaultsメソッドもその1つです。with_defaultsメソッドは、別途追加済みのreverse_mergeメソッドのエイリアスなので、この名前が動作を知る手がかりとなるはずです。 reverse_mergeメソッドのソースコードを見るとわかるように、実装は実に簡素です。 🔗 以下のように書くよりも デフォルト値をHash#mergeで追加する。 user_provided =
About Arel is an SQL abstraction library built into Ruby on Rails. https://github.com/rails/arel Tables users = Arel::Table.new(:users) users = User.arel_table # ActiveRecord model Fields users[:name] users[:id] where (restriction) users.where(users[:name].eq('amy')) # SELECT * FROM users WHERE users.name = 'amy' select (projection) users.project(users[:id]) # SELECT users.id FROM users join basic
Rico's cheatsheets Hey! I'm @rstacruz and this is a modest collection of cheatsheets I've written. devhints.io / bash Bash scripting enzyme Enzyme es6 ES2015+ go Go react React.js sass Sass vim Vim xpath Xpath Recently updated clip Command Line Interface Pages tig Tig tar tar atom Atom grep GNU grep stimulus-reflex StimulusReflex screen Screen factory_bot Factory Bot vimscript Vim scripting vim Vi
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Gemfile of dreams: the libraries we use to build Rails apps—Martian Chronicles, Evil Martians’ team blog 原文公開日: 2023/01/17 原著者: Vladimir Dementyev(首席バックエンドエンジニア)、Travis Turner(技術記事編集者) サイト: Evil Martians -- ニューヨークやロシアを中心に拠点を構えるRuby on Rails開発会社です。良質のブログ記事を多数公開し、多くのgemのスポンサーでもあります。 日本語ブログ: 合同会社イービルマーシャンズ - Qiita 日本語タイトルは内容に即したものにしました。また、gemごとにGitHubリポジトリへのリンクカードも追加してあ
さて、どこからお話を始めましょうか。ここに到達するまでに長い長い旅路をたどりました。かつて私は開発にVagrantを使っていましたが、当時のVMは私の4GB RAMのノートPCでは少々重すぎました。そして2017年にコンテナへの乗り換えを決意したときに、やっとDockerを使い始めました。 しかしDockerで問題がたちまち解決したという気持ちではありません。自分自身やチーム、そしてすべての人々にとって完璧な設定を追求し続けてきましたが、「これでよし」と言える究極の設定はありません。標準的なアプローチを見出すまでにかなりの時間を要しました(2019年に本記事を最初に公開した時点でも相当の時間を費やしていました)。 本記事を最初に公開して私の秘密を隅々までオープンにして以来、多くのRailsチームや開発者が私の手法を採用し、さらに改良や貢献にもご協力をいただきました。 前置きはこのぐらいにし
今回の初期構成は 3 つのマイクロサービスで構成されるウェブアプリケーションでした。そのうち 2 つは例年通り各言語での実装が用意されていましたが、3 つ目は単にコンパイル済バイナリが置いてあるだけという感じでした。そのため、前者 2 つのアプリケーションはコード内容を含め改善しつつ、3 つめのアプリケーションについては本体を改善不可能と諦めそもそもアプリケーションを極力呼ばないようにするのが重要だったかなと思います。 今回の主題となるアプリケーションは isuda と呼ばれるシンプルなオンライン辞書投稿サービスでした。単語の解説記事部分のテキストには他の単語へのキーワードリンクが挿入されているという仕様があったので、新しい単語が投稿されるたびに、その単語を含む既存の単語の解説記事部分を再生成する必要があるというものでした。 我々のチームでは Ruby 実装を改善していきましたが、Ruby
require "use_arguments" # Array クラスのメソッドに対して使用する using UseArguments::Array p [1, 2, 3].map { _1 + _1 } # => [2, 4, 6] # Hash クラスのメソッドに対して使用する using UseArguments::Hash data = {homu: 13, mami: 14, mado: 13} p data.select { _2 < 14 } # => {:homu=>13, :mado=>13} require "use_arguments" using UseArguments p proc { _args }.use_args.call 1, 2, 3 # => [1, 2, 3] plus = proc { _1 + _2 }.use_args p plus.call
ウソみたいな本当の話。Ruby でファミコンエミュレータを書いてみました。 気になる速度ですが、自分の環境では 20 fps ちょっと出ます。ファミコンは 60 fps なので、実速の 1/3 です。Ruby3x3 (Ruby 3 は Ruby 2 の 3 倍速い)という matz の宣言が実現すれば、実速が達成されることになりますね! 試してみたい人はこんなふうに実行してください。 $ gem install ffi $ git clone http://github.com/mame/optcarrot.git $ cd optcarrot $ bin/optcarrot examples/Lan_Master.nesSDL2 か SFML が適切にインストールされている必要があります。Debian/Ubuntu なら apt-get install libsdl2-dev で。 Ru
動機 「Ruby で『モルダー、あなた疲れてるのよ』を出力したりしなかったりしたいなぁ」と思い悩んでいたところ、 Ruby でモルダー、あなた疲れてるのよを出力する方法 という素晴らしい記事に出会いました。ただ、もっと汎用的に「モルダー、あなた疲れてるのよ」を出力したりしなかったりしたいので、専用のクラスを作ってみました。 成果物 Enumerable で Mulderable な感じにしてみました。 class Mulder include Enumerable SCULLYS_WORDS = %w(モルダー あなた 疲れてる のよ).map(&:freeze).freeze SCULLYS_NATURAL_REMARK = SCULLYS_WORDS.dup.insert(1, '、').join.freeze def each(&block) @words ||= SCULLYS_W
まえがき Ruby を仕事で使う上で、「モルダー、あなた疲れてるのよ」を出力したり、出力しなかったりしたいことはままあります。 そこで今回は「モルダー、あなた疲れてるのよ」を出力したり、出力しなかったりします。 本文 コード def mulder %w[モルダー あなた 疲れてる のよ].shuffle.each_slice(2).map { |ws| ws.map { |w| w.chars.each_slice((w.size/2.0).ceil).map(&:join) }.flatten.tap{ |_| break [_[2], _[1], _[0], _[3]] if rand(2) == 0 } }.flatten.insert(2, '、').join end loop.with_index(1) do |_, i| print "#{i}: " puts mulder.t
Ruby で暗黙のブロックパラメータを使うための gem をつくりました。 元ネタ : Rubyのブロックつらい問題を解決する暗黙のブロックパラメータ - Qiita github : osyo-manga/gem-use_arguments インストール $ gem install use_arguments 定義される暗黙のブロックパラメータ パラメータ 意味 _1, _2..._N 各引数の要素 _ _1 と同じ _args 全引数の配列 _yield ブロック引数 _self 呼び出された Proc オブジェクト自身 _receiver ブロックを渡したメソッドのレシーバ 使い方 使い方は簡単で、ブロックの引数を定義する代わりに _1 や _2 といったプレースホルダを変わりに使用します。 require "use_arguments" # Array クラスのメソッドに対して使用
最近Elixirが人気ですよね。Erlang VM上でOTPの恩恵を受けながら簡潔な記法で並行処理を書ける言語ということで話題になっていますな? Elixirは関数型プログラミングのエッセンスを取り入れていると言われており、そのひとつにPipe演算子(|>) がある。 Enumerables and Streams - Elixir Kernel – Elixir v1.1.1 Pipe演算子(|>)とは何かというと、左辺の値を右辺の関数の第1引数に適用する演算子。 iex> [1, [2], 3] |> List.flatten() [1, 2, 3] 上記のコードは、左辺の[1, [2], 3] を 右辺の List.fatten(list) の引数として渡す。 このPipe演算子は、Stream モジュールなどと合わせて利用するとデータが左から右へ流れている模様をコードとし視覚化する
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く