2018-07-31 (火)

Ruby でライブラリがシステムに存在しているかどうかをチェックする [Ruby]

require 'mkmf'

have_library('pq')
checking for main() in -lpq... yes
=> true



mkmf.rb を読んだところ、C++ のコードを生成してチェックしていた。

Kernel.have_library のコードはこちら。

カレントディレクトリに mkmf.log が作られるが、これを防止するには
以下で良いみたいだ。

MakeMakefile::Logging::logfile('/dev/null')



ネット上には以下のコードがあったが、mkmf.rb を読んだら上でいけた。

MakeMakefile::Logging::logfile('/dev/null')
module MakeMakefile
  module Logging
    @logfile = '/dev/null'
  end
end



参考情報
instance method Kernel#have_library (Ruby 2.5.0)
Module: MakeMakefile (Ruby 2.5.0)

2018-05-26 (土)

Ruby で FTPS 接続する方法 [Ruby][ftp]

まずは情報の整理から。

種類暗号化なし暗号化あり
HTTPHTTPHTTPS
FTPFTPFTPS

混乱しやすいが、SFTP は SSH を使って暗号化・認証を行うプロトコルで
FTPS とは別。

・HTTP のセキュア版が HTTPS
・FTP のセキュア版が FTPS
と覚えると良いだろう。

続きを読む

2017-08-07 (月)

github-nippou v3.0.0 released [GitHub][Ruby]

masutaka/github-nippou

Print today's your GitHub action.



v3.0.0 から出力フォーマットをカスタマイズ出来るようになりました。
@ryz310 に大感謝です!

リリースノートは以下をどうぞ。
https://github.com/masutaka/github-nippou/releases/tag/v3.0.0

続きを読む

2017-05-28 (日)

GitHub Organization をメンテナンスするスクリプトを作った [GitHub][Ruby]

成り行きで会社の GitHub Organization の管理者業をしています。

Organization 配下のリポジトリやユーザが増えてきて、気にかけるのが
大変になってきたので、メンテナンス用の Ruby スクリプトを作りました。

feedforce/github-org-notice

Maintenance scripts for GitHub organization



続きを読む

2016-12-19 (月)

任意の Ruby オブジェクトを YAML として書く [Ruby]

実際使うことはないだろうがメモ。

hoge:
  !ruby/object:ActiveSupport::Duration
  value: 7776000
  parts:
  - - :months
    - 3



続きを読む

2016-12-19 (月)

Ruby の $ERROR_INFO などの特殊変数は require 'English' が必要だったのか [Ruby]

先日会社の tech channel で話題になったのでメモ。Rubiest の方々にとっ
ては常識なんですかね...?

$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin15]

$ ruby -e 'raise "aaa" rescue  p $!'
#<RuntimeError: aaa>

$ ruby -e 'raise "aaa" rescue  p $ERROR_INFO'
nil

$ ruby -r English -e 'raise "aaa" rescue  p $ERROR_INFO'
#<RuntimeError: aaa>



Ruby はグローバル変数の初期値が nil なのがたちが悪い。個人的にはも
う $ERROR_INFO とかは使わないと思う。

続きを読む

2016-12-10 (土)

bundle install で Your Gemfile.lock is corrupt. と怒られる件 [Ruby][Gem]

個人のいくつかのリポジトリで bundle install できないことがあり、困っ
ていました。

$ bundle install
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Using rake 11.3.0
Using concurrent-ruby 1.0.2
Using i18n 0.7.0
Using thread_safe 0.3.5
Using net-ssh 3.2.0
Installing minitest 5.10.1
Your Gemfile.lock is corrupt. The following gem is missing from the DEPENDENCIES section: 'ffi'



続きを読む

2016-10-09 (日)

compare_linker v1.3.0 をリリースした [Ruby][Gem]

compare_linker | RubyGems.org | your community gem host

RubyGems.org is the Ruby community's gem hosting service. Instantly publish your gems and install them. Use the API to interact and find out more information about available gems. Become a contributor and enhance the site with your own changes.



仕事やプライベートで、毎週自動 bundle update していますが、Gem に
よっては GitHub の compare Link を作れませんでした。

人間が手動でリンクを作ってコメントするのが無駄な作業で、なんだか申
し訳なかったので修正してみました。これで GitHub に Git のタグがな
い Gem 以外は救えるようになったはず。

出力フォーマットもシンプルになっています。

circle.yml とかで circleci-bundle-update-pr をインストールしていれ
ば、自動的に v1.3.0 の compare_linker が使われます。

続きを読む

2016-09-29 (木)

ローカルとGistを同期する gist_updater gem を作った [Ruby][Gem][GitHub]

必要に迫られて Ruby のスクリプトを作ったら、汎用化できたので
Gem にしてみました。

gist_updater | RubyGems.org | your community gem host

RubyGems.org is the Ruby community's gem hosting service. Instantly publish your gems and install them. Use the API to interact and find out more information about available gems. Become a contributor and enhance the site with your own changes.



続きを読む

2016-09-22 (木)

『オブジェクト指向設計実践ガイド』を読んだ [OOP][Ruby][Book]

本当に良い本でした。読んで良かった。初心者を中心に中級者にも刺さる
本だと思います。輪読などして、チームで読むとオブジェクト指向設計の
そもそもの話をしなくて良さそうです。



難しい話が易しく説明されており「あ、そうだったのか」と思うことが度々
でした。ボリュームも全9章とコンパクトで、1日1章読むのに丁度よかっ
たです。

読んでメモった箇所を中心にまとめていきます。

続きを読む

2016-06-22 (水)

Ruby の構文をトークンに切り分ける [Ruby]

個人的なメモ

[1] pry(main)> Ripper.lex(':manage/home')
=> [[[1, 0], :on_symbeg, ":"], [[1, 1], :on_ident, "manage"],
    [[1, 7], :on_op, "/"], [[1, 8], :on_ident, "home"]]



":" → シンボルの開始
"manage" → 識別子(identifier)
"/" → 演算子(operator)
"home" → 識別子

class Ripper (Ruby 2.3.0)

2016-06-13 (月)

fluent-logger-ruby が堅牢だった件 [Fluentd][Ruby]

[2016-06-13-1] にも書いたとおり、こちらの PR で fluent-logger-ruby
を導入しました。
fluentd にも POST する by masutaka · Pull Request #40 · masutaka/masutaka-metrics

その時に、こんな問題に気づきました。



結論から言うと、Wrapper を作る必要はありません(一度作ってしまった
けど...
)。fluent-logger-ruby がいい感じに処理してくれます。

続きを読む

2016-04-09 (土)

社内勉強会で github-nippou v2.0.0 をライブリリースした [GitHub][Ruby]

[2016-03-23-1] に予告したとおり、今回は破壊的変更をしました。

https://github.com/masutaka/github-nippou/releases/tag/v2.0.0

- 改良
    - --all と --num オプションを削除
    - 代わりに --since-date と --until-date を追加
    - デバッグオプション --debug を追加
    - サブコマンド version を追加
    - パフォーマンスの改善
- バグ修正
    - Issue や Pull request 発生時ではなく、現在のタイトルを使用
    - 同じく現在のステータスを使用
- その他
    - ソースコードのリファクタリング

続きを読む

2016-03-23 (水)

github-nippou v1.2.0 released [GitHub][Ruby]

https://github.com/masutaka/github-nippou/releases/tag/v1.2.0

- 改良
    - URL でソートしたリストを出力
    - Issue や PR がクローズされていたら、closed! を付加

v2.0.0 では [2016-03-21-1] に追加した -a, -n オプションが早くもな
くなる予定です・・・!

この記事に言及しているこのブログ内の記事

2016-03-21 (月)

github-nippou v1.1.0 and v1.1.1 released [GitHub][Ruby]

https://github.com/masutaka/github-nippou/releases/tag/v1.1.0
https://github.com/masutaka/github-nippou/releases/tag/v1.1.1

-a オプションを追加しました。今日より前のイベントも(存在すれば)
標準出力に出力します。日報書き忘れの時などにご利用下さい。

-n オプションも追加しました。たまに、作成した PR の取りこぼしがあ
ったのはこのせいでした。以前 Issue 作って忘れてました。

Events|GitHub Developer Guide

Events support pagination, however the per_page option is
unsupported. The fixed page size is 30 items. Fetching up to ten
pages is supported, for a total of 300 events.


Octokit::Client::Events#user_events が使う
"GET /users/:username/events" は pagination をサポートしており、
デフォルトでは 30 イベントしか返さないからです。

デフォルトを 50 にして且つ、オプションで指定可能にしました。10 の
倍数を指定して下さい。上限は 300 です。

あとは "<" と ">" をエスケープしたり、使用する Gem のバージョンの
縛りをなくしてみたり。

今回初めて Thor を使いました。お手軽にコマンドラインオプションや
ヘルプを実装できる
ので、良い感じですね。

この記事に言及しているこのブログ内の記事

2016-01-31 (日)

yard doc コマンドの -o オプション以外で出力ディレクトリを変更する考察 [Ruby][Gem]

結論から言うとできませんでした。-o オプションが必須です。

以下、調査結果のメモ。

`$ bundle exec yard doc` したら、doc ディレクトリではなく hoge ディ
レクトリにドキュメントファイルを作りたかったんです。

でも設定ファイルやモンキーパッチではどうにもなりませんでした。

Pull Request 出すしかないけど、そこまでして変えたいわけじゃないか
らなあ...。

続きを読む

2016-01-01 (金)

El Capitan で eventmachine や puma のビルドが通らないアレへの対策と解説 [OSX][Ruby]

El Capitan から openssl のヘッダファイルが削除されました。ヽ(`Д´)ノプンプン

Homebrew をお使いの方は、eventmachine や puma をインストールしよう
とすると、こんなエラーが発生すると思います。(発生しない方は、すで
に後述のコマンドを実行しているのだと思います。)

make "DESTDIR=" clean

make "DESTDIR="
compiling binder.cpp
In file included from binder.cpp:20:
./project.h:116:10: fatal error: 'openssl/ssl.h' file not found
#include <openssl/ssl.h>
         ^
1 error generated.
make: *** [binder.o] Error 1

make failed, exit code 2



続きを読む

2015-12-13 (日)

RubyKaigi 2015 に行ってきた #rubykaigi [Ruby]

RubyKaigi2015
http://rubykaigi.org/2015

12/11(金)から始まった RubyKaigi 2015 に 3 日間参加してきました。

1 日目は自宅を出た時は小雨で、東銀座駅に着いたら暴風雨、
会場に着いたら快晴と、汐留とはなんとハードな場所かと疲労困憊
汗ダラダラで始まりました。

以下、自分用のメモです。

続きを読む

この記事に言及しているこのブログ内の記事

2015-10-04 (日)

継続的 bundle update サービス deppbot を使ってみた [Ruby][GitHub]

昨日話題になっていた https://www.deppbot.com と、
拙作のツール ci-build-trigger [2015-07-28-1] を比較してみました。

タイミングよく、Gem のアップデートがあってよかったです。

私のツールが作った Pull request


https://github.com/masutaka/masutaka-metrics/pull/19

masutaka/masutaka-metrics#19

続きを読む

2015-07-29 (水)

Ruby の定数や Object.freeze の理解が曖昧だったのでメモ [Ruby]

◆定数には再代入可能(怒られるけど)。

irb(main):001:0> HOGE = 'abc'
=> "abc"
irb(main):002:0> HOGE = 'xyz'
(irb):2: warning: already initialized constant HOGE
(irb):1: warning: previous definition of HOGE was here
=> "xyz"
irb(main):003:0> HOGE
=> "xyz"



続きを読む

最終更新時間: 2018-09-24 23:20

検索


最近の話題
- 2018-09-24
  <ネタバレなし>オクトパストラベラーを完全にクリアーした
- 2018-08-19
  家電操作を IRKit から Nature Remo に変えた #natureremo
- 2018-07-31
  Ruby でライブラリがシステムに存在しているかどうかをチェックする
- 2018-06-30
  エニタイムフィットネスに通うことにした
- 2018-05-26
  Rails4 と Rails5 とでの eager_load_paths の違い
  Ruby で FTPS 接続する方法
- 2018-04-30
  AirMac Extreme から Buffalo のルータに変えたらインターネット速度が 45 倍以上になった
- 2018-03-23
  Twitter クライアントを Tweetbot に変えた
最近追記された記事
- 2018-04-30-1 (0日前)
- 2017-10-21-1 (268日前)
- 2017-01-10-1 (296日前)
- 2017-04-08-1 (316日前)
- 2017-06-02-1 (450日前)
- 2017-04-29-1 (512日前)
- 2017-04-13-1 (526日前)
- 2017-04-13-1 (528日前)
- 2017-03-02-1 (570日前)
- 2017-02-25-1 (575日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (3)
- AWS (21)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (93)
- Boxen (2)
- Bugsnag (1)
- capistrano (4)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (10)
- clang (26)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (3)
- E-mail (8)
- elasticsearch (4)
- Emacs (222)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (2)
- Game (21)
- GCP (1)
- Gem (5)
- Git (9)
- GitHub (20)
- golang (10)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (4)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (17)
- IRC (1)
- Jenkins (8)
- JS (1)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Kubernetes (2)
- Langrich (7)
- LDAP (6)
- Life (22)
- Linux (6)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (2)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (13)
- Rake (2)
- RaspberryPi (2)
- RedHat (29)
- Redmine (3)
- RSpec (2)
- Ruby (52)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (15)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (16)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+