2020-01-20 Module#private_constant / Bundler.with_clean_env / gem install error (libxml-ruby, mysql2)
Module#private_constant (Ruby 2.7.0 リファレンスマニュアル)
module Foo
BAR = 'bar'
class Baz
end
QUX = 'qux'
class Quux
end
private_constant :QUX
private_constant :Quux
end
Ruby の private constant。もう少しスマートなやり方あると良いなぁ。
別のディレクトリにある Gemfile をsystemメソッドで “bundle check” する
これ昔僕も困ったことあって知らなかったソリューション。
See also. https://bundler.io/man/bundle-exec.1.html#Shelling-out
Bundler.with_clean_env do
Dir.chdir "/other/bundler/project" do
`bundle exec ./script`
end
end
libxml-ruby 3.1.0 install on macOS 10.15 Catalina
$ gem install libxml-ruby -v '3.1.0' -- \
--with-xml2-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr \
--with-xml2-lib=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib \
--with-xml2-include=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2
An error occurred while installing mysql2 (0.4.10)
下記のエラーの対処としてこれをやれば解決できた。
An error occurred while installing mysql2 (0.4.10), and Bundler cannot continue.
$ gem install mysql2 -v '0.4.10' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib
これで mysql2 v0.4.10 がinstallできた。