プログラミング -> 言語 -> Ruby
結論 ルートにある foo_bar-0.1.0.gem のような .gem ファイルを削除する*1。 背景 自作の gem である 自前の GitLab にプッシュしたものである Gemfile 内で git: https://gitlab.example.com/... のように指定してインストールしようとしたものである spec…
Ruby で Slack へ単にポストするだけの方法 gem Slack Ruby Client を用います。Slack::Incoming::Webhooks という gem もありますので*1、機会があれば触ってみるとよいかと思います。 具体的な方法 1. "Bots" アプリをワークスペースに追加する Bots とい…
結論 読みやすくすること テストしやすくすること 最も大事なことは「それを行うことでユーザによりよい価値やサービスを届けられるようになること」 Repro Tech: Long Life RailsApps これです。 当日の発表資料 全員の方の発表資料が公開されています。 当…
結論 CONFIGURE_OPTS を設定した上で rbenv install する。 具体例 $ CONFIGURE_OPTS="--with-readline-dir=/usr/local/opt --with-openssl-dir=/usr/local/opt" rbenv install 2.6.0 ruby-build: use openssl from homebrew Downloading ruby-2.6.0.tar.bz2…
1. まずはインストール gem install でも bundle install でもよいのでまずはインストールします。 $ gem install capistrano 2. まずは初期化 初期化しましょう。 $ cap install mkdir -p config/deploy create config/deploy.rb create config/deploy/stag…
結論 gcc を入れます。 $ sudo yum install -y gcc 補足 rbenv/ruby-build の Wiki には以下のように書いてあります。が、これだけだと標題のエラーが出てしまいました。 CentOS/Fedora: # (`dnf install` on Fedora 22+) yum install -y gcc-6 bzip2 openss…
よちよち.rb & Sendagaya.rb 合同開催「よちがや.rb」 〜REST アーキテクチャを理解しよう会〜 2019/01/07 に開催された「よちよち.rb & Sendagaya.rb 合同開催「よちがや.rb」 〜REST アーキテクチャを理解しよう会〜」に行ってきました。内容の詳細につい…
結論 こちらをご覧ください。
結論 Gemfile.lock に書いてある Bundler のバージョンと、Capistrano が実行しようとする Bundler のバージョンが一致しない*1から。 前提条件 rbenv を使っていて Ruby は正しくインストールされている 上記のバージョンの Ruby にて Bundler もインストー…
結論 チャンネル指定のキーには 'channels' として複数形を用いる。 公式ドキュメント
前提 slack-notifier を用いる 画像ファイルを直接 POST することはできない 画像ファイルの URI を POST する 結論 require 'slack-notifier' notifier = Slack::Notifier.new 'WEBHOOKS_URI' do defaults channel: '#DEFAULT NO CHANNEL NAME' end attachm…
前提 slack-ruby-client を用いる @taro にメンションを飛ばすものとします @taro の「メンバーID」は ABCD1EF2G であるとします 結論 '<@ABCD1EF2G> こんにちは!' だめな例 '<@taro> こんにちは!' '<taro> こんにちは!' '@taro こんにちは!' '<ABCD1EF2G> こんにちは!' </abcd1ef2g></taro>…
結論 Open3.popen3 を用いる。 具体例 以下の例で、Rails(の gem)をインストール際の標準出力がガーッと流れるように表示されます。 require 'open3' Open3.popen3('gem install rails') do |i, o, e, w| o.each { |line| puts line } end その他の方法、…
前置き 数時間ハマって逃げ出したので確実ではないです。 状況 Itamae でこんなふうに書いたとします。 execute 'nohup /usr/bin/java -jar /opt/metabase/metabase.jar > /tmp/metabase_stdout.log 2> /tmp/metabase_error.log &' do # hoge end 適用すると…
結論 -i オプションを使う。 具体例 $ itamae ssh -u foobar -h example.com -i ~/.ssh/HIMITSU-KAGI.DESU recipe.rb
結論 -u オプションを使う。 具体例 $ itamae ssh -u foobar -h example.com recipe.rb
結論 愚直にこうやりましょう。 execute 'foobar-san WO sudo NI TSUIKA SURU' do command 'usermod -aG sudo foobar' end
結論 openssl によって生成されたハッシュを書く。 具体例 $ openssl passwd -1 "foobar" $1$tK7aR9Bd$oNl3Md39zkU54HyBpm2Yb/ user 'USER WO TSUKURU' do username 'hogehoge' password '$1$tK7aR9Bd$oNl3Md39zkU54HyBpm2Yb/' (以下省略) end 参考(答え…
結論 $~[1] は $LAST_MATCH_INFO[1] と書けます $*[2] は $ARGV[2] と書けます 注意点 require 'english' をする必要があります。 備考 現実的には require 'english' はなされていることがほとんどだと思います 事実 $ARGV は無意識に使ってました…… requir…
結論 gem のバージョンを以下のようにちゃんと指定しましょう。 gem 'sidekiq-cron', '~> 1.0.4'
結論 公式ドキュメントを読みましょう。 なお、remote_file 内だけでの話ではなく、Resource Type 内での話です。 user String If you specified this, commands related with the resource will be executed as the user. つまりどういうことか 以下のよう…
結論 ダメ execute 'foobar' do command 'first_awesome_command' command 'second_awesome_command' end OK execute 'foobar' do command 'first_awesome_command && second_awesome_command' end
前提 必要なパッケージ は以下のようにインストール済みです。libgdbm5 が入らない場合は libgdbm3 を入れます。 $ sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev l…
余談 「使えなくなっている」と言ってもかなり前の話ですが……。
注意 特別なことは全くしていません。そして Capistrano に限った話でもないです。 結論 dotenv を用いる。
結論 以下は全て OK でした。 $ bundle i $ bundle ins $ bundle inst $ bundle insta $ bundle instal 以下は怒られました。 $ bundle in Ambiguous command in matches [info, init, inject, install] 余談 知りませんでした……。
プライベート gem 外部に公開できない、あるいは公開したくない gem がある場合に、GitLab.com のプライベートリポジトリにプッシュして利用する方法です。 結論 とはいえ、特に難しいところはないです。鍵の設定をしてあることを前提として、以下のとおりに…
現象 こんな感じのエラーが出ます。 $ bundle exec ruby awesome_pop3.rb Traceback (most recent call last): (中略) /Users/foobar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/net/pop.rb:808:in `block in pop': can't modify frozen String (FrozenError) …
Action Mailer いつものこれです。 Action Mailer を単体で使う 単なる Mail の gem を使うよりか少し楽なので、Action Mailer を単体で*1使います。いきなりコードを示すと、以下のようになります。 なお Action Mailer の gem は予めインストールしておい…
結論 以下の例ではカレントディレクトリにあるディレクトリ名を対象にしています*1。 最終更新時刻の昇順に並べる場合 Dir.glob('*/').sort_by{ |directory_name| File.mtime(directory_name) }.each do |sorted_directory_name| puts sorted_directory_name…