タグ

ブックマーク / aligach.net (13)

  • docker composeの–profileオプションで必要な時だけserviceを立ち上げる

    docker composeって必要なserviceまとめて扱うから重いと思ってた例えば Procfile であれば起動しないプロセスを簡単にコメントアウトできるので、一時的な ON/OFF も容易だ。 しかし docker compose は長大な YAML になっていて簡単に切り替えできないんだよなぁとずっと思っていたんだけど、いつの間にか profile というものができていた。 2021-01-20 の version 1.28.0 で --profile を support して以降、この状況は変わっていたようだ。 Docker Compose release notes | Docker Docs ということは、2023-06 に docker compose v1 が EOL になっている今、利用可能な compose コマンドでは必ず使えるということになる。 Docker

  • 自作Rubyスクリプトをrubygems、docker imageとして配布、利用するために

    問題意識Ruby で書いた自作のツールを手軽に持ち運んで使いたい。そのために rubygems で配布したい(Ruby 環境を持っている場合向け)Docker image で配布したい(Ruby 環境を持っていない場合向け)以上二つを同時に満たしたい。 この辺はまぁずっと持ってる課題意識ではあるし、もう一つのアプローチとしては Wasm もある Wasmで少しだけ手軽にRubyRubyスクリプトを持ち運ぶ (2024-05-25) | あーありがち が、今回はあちこちのクラウドでそのまま runtime として扱いやすい Docker の方の話を扱う。 rubygemsを作る部分は割愛bundle gem して雛形を作って、頑張ってコードを書くべし。 docker build時に注意の必要なこと「持ち込んだもの」は消せないどういうことかというと、ポイントは以下。 COPY で *.gem

  • 今さらYARD + Solargraphで快適Rubyコーディング

    世は Ruby 3.x で RBS わっしょい時代ですが、あえて今 YARD と Solargrpah の話。 目的Ruby の開発でも JavaScript 並とは言わないまでもある程度カジュアルにエディタ / IDE の補完を利用し、TypeScript 並とは言わないまでも静的型の恩恵に与った、フィードバックが早くて安心感のある開発を行いたい。 結論YARD + Solargraph ( + LSP ) でそれなりに快適になるのですぐやるべき。 案Ruby で静的な型チェックを行う方法はいくつかあるが、今回は以下の二つを試した。 RBS + SteepYARD + Solargraph今回は RBI + Sorbet は試していない。これは以前(だいぶ前)試した1 時に native extension の挙動が変だった記憶があってちょっと苦手意識があるのと、RBI か RBS かで

    fumikony
    fumikony 2022/08/05
  • Rubyでdebug用のloggerをお手軽低コストに仕込む

    まとめproduction での実行記録をちゃんと残すという意味ではなく(なんか変かも?)と思って調べる時やテスト実行時に役に立つ debug 用の logger の設定方法をまとめるlogger の block 記法と caller が便利Loggerのblock記法はRails GuideでImpact of Logs on Performanceとして紹介されているDebugging Rails Applications — Ruby on Rails Guides 曰く

  • Feature Toggleについて調べてみた

    前から何回か興味を持ってるんだけど、ちょっとまとめて調べながら思ったことをザクザク吐き出しておくよ。 今のところ考えるちょうどいい使い方いろんな使い方ができると思うんだけど、リリースサイクルの都合ではなく どんな機能が現在のプロダクトで切り替え対象となっているのかの可視化 ( admin panel )サーキットブレイカーの意味で使うのを前提にしつつ、 カナリアリリースA/Bテストにも導入していく、くらいの感じだとよさそう。 大げさな感じがするかもしれないけど、ちゃんと考えて入れないとややこしくなるだけだなと感じているので。 雑な言い方すると feature toggle って global な状態分けの if ブロックなわけで、実際、特別な記法なんかなくたって環境変数と if だけで実現可能なわけですよ。でもそれって実装側からもプロダクトオーナー側からも実態が見えにくくなるだけでいいこと

  • 伝統的なサーバサイドWeb開発アンチパターンとその対策 - C, V編 -

    ざざっとメモ。当たり前ですが網羅はしてません。いわゆる After Rails な Web MVC を想定しています。紹介するコードは RubyPHP だけです。システムの規模などに依存しない内容です。悪しからず。 続くかどうかも分かりません。 まず基のベストプラクティス1. 名前重要それを表す最もよい名前を探すこと。 よい名前が付けられない場合はそのことについて十分よく知っているとは言えない。よくない名前、嘘をついている名前1はそれを後から読んだ時に混乱を生み、理解を妨げ、変更時に問題の温床となる。 2. KISS ( Keep It Simple, Stupid )いろんな業界、いろんなシーンで言われるのでよく分かると思う。プログラミングにおいては 変数を多くしすぎないfunctionを長くしすぎない(classに対して)functionを多くしすぎないとかそんな意味で考えると

  • ~/.netrcの使えないCI上からGitHubなどのprivate repositoryをprivate package代わりに使う

    前提deploy 先で build プロセスを動かすことのできないプロジェクトであること~/.netrc が無効な git クライアントが動いている※ 今回の方法は依存パッケージを記述するファイルを強引に書き換えてしまうので、Gemfile と Gemfile.lock が揃っていないとそもそも build できない Heroku x Rails のような環境では使えないはずです。試してないけど。 方法環境変数に token を持つpackage を install する前に依存先の URI を token 付きのものに書き換えるyarn を使っている場合は yarn install –no-lockfile オプションを使うコード以下のようなコードを事前準備の段階で実行すれば実現できる。 #! /bin/sh if [ -n "$CIRCLE_SHA1" -a -n "$GITHUB_T

  • Google Apps Script開発にstaging環境を用意してContinuous Deployment

    2023年夏時点で Script API はサービスアカウントで利用することができないため、安全に安定的に CD を実現するのは難しく、そこまでするメリットが薄いのではないかと考えています。 Introduction  |  Apps Script  |  Google for Developers Apps Script API はサービス アカウントでは動作しません。 Script API 登場以降、ずっとこの話題はありましたが、2021年に結論リポジトリができています。 Apps Scripts API 背景Google Apps Script 開発もモダンになっており、Git + GitHub + CI/CD な構成は実現できることが分かった Google Apps Script開発をもうちょっとモダンにしてみる - あーありがち(2017-05-27)でもやはり master

  • dotenvで秘密情報を扱う件 〜 Ruby, PHP, PaaS, CI について 〜

    .envファイルに環境変数を書いておくdotenv って何かと一言で言うと Foreman の提供している .env ファイルから環境変数をセットする機能を Foreman 環境以外でも利用できるようにしたもの。 えーと。何のこと?って感じですね。 dotenv という言葉は意味する範囲がやや曖昧なんだけど、自分の場合は「.env ファイルに sh script のように環境変数を記述しておくと、アプリが実行時に自動的に環境変数として取り込むことができる系の機能の総称」と捉えている。 で、実装がそれぞれにある。いちばん有名な Ruby バージョンだと予想通り Dotenv gem で、他の言語でも似たようなものがいくつもある。 bkeepers/dotenv なぜ.envファイルから環境変数をセットするのか環境変数から設定を取得したり環境判別用の情報を取得しようという話は決して新しい話では

  • 2016年に設計なんてない、そこそこの量のJavaScriptのエラーを監視して対策し始めました雑感

    公開されるどこにも記録を残していないような気がするが、2016年の初めからとある事情により JavaScript のエラーをサーバに送りつけて監視サービスに送りつけてエラーの発生を知り、修正する、ということを地味にくり返していた。 そこに至る顛末と今後の分析の予定のお話。 背景これまで扱ってきたものはそこまで JS ヘビーでないものが多く、また自分で書くものはできるだけユニットテストが動くように書いていた and そもそも監視サービスが入っていなかったので、エラーのログをサーバに送るとか監視するとか、そこまで手をかけていなかった。 しかし今回の案件は初期の設計では考えてもみなかった量のカウボーイスタイル JS がコミットされしまい、要するに非常にイキのいいフレッシュなレガシーコードがてんこ盛りで動いている状態になってしまった。 (あーはい、全部ぼくがコードレビューしてリジェクトすれば防げた

  • rsync -C で除外されるバージョン管理関連のファイル

    rsync の -C オプションは CVS と似たアルゴリズムで同期対象からファイルを除外してくれる。 $HOME/.cvsignoreCVSIGNORE 環境変数各 SRC ディレクトリの .cvsignoreを参照してくれるが、それ以外にもデフォルトで除外してくれるパターンもある。 少なくとも rsync 3.0.7 では -C, --cvs-exclude This is a useful shorthand for excluding a broad range of files that you often don't want to transfer between systems. It uses a similar algorithm to CVS to determine if a file should be ignored. The exclude list is i

  • colordiff で色とりどりな世界へ, ぐりもんアップデート時は load 順に注意

    実は今まで diff はすべてモノクロで見ていた。Emacs の vc-diff 以外では。どうにかならんかなぁと思ってはいたがこんなもんかなとも思って長いこと過ごしていた。 しかし coderepos の commit 数ナンバー1の人が github を練習したメモ - TokuLog 改めB日記 を読んで git では設定次第で color 出力できることが分かった。だったら他のツールでもそういう方法は必ずあるはずだと思ってググったらいきなり ColorDiff が出てきた。そこら中でパッケージとして利用できるみたいなので使い始めるのは十分簡単。中身は Perl スクリプトで、diff の出力を解析してエスケープシーケンスで色づけしてくれる。 使い方は

  • 今さら始めるRails 3

    Ruby との付き合いはそれなりに長いのですが実は Rails で何かを作ったことは一度もありません。1scaffold や migration は一通り試してみたことがあったけれども、何か拭えない不安感や縁のなさから今までは周辺技術の一つとして以上には触ったことがありませんでした。 興味今回、出遅れはしたけれども 全面的に Merb & Rack ベースArel 登場i18n の機構が組み込み済みすでに実績が増えてきている辺りで強く興味が湧いてきたのでまずは一通りの準備をしてみました。 消極的な理由消極的な理由も実はあって、それは PHP のレガシーコードと戦うのに疲れた負債のある PHP で最新バージョンに追いつくのは大変最新バージョンでないと PHPPHP のフレームワークの旨味は味わえないRuby なら最新でなくたって遊べるRails の過去の作法をほとんど知らないので混乱し

  • 1