最近の更新 | |
---|---|
ドライランのありがたみを改めて知る
| 2024/04/04 |
伊豆半島
| 2024/03/31 |
お出かけチェックリスト
| 2024/03/29 |
Ruby
| 2024/03/27 |
Kubernetes
| 2024/03/22 |
音楽データをDisplayAudioで聞く
| 2024/03/09 |
Redmine
| 2024/02/05 |
git
| 2024/02/02 |
経済
| 2024/01/08 |
どうする家康
| 2023/12/17 |
MX-Linux
| 2023/11/06 |
國體関連学-休学のご連絡
| 2023/08/13 |
Debian
| 2023/08/02 |
CentOS
| 2023/06/13 |
Dell-XPS13
| 2023/05/23 |
ベルト
| 2023/05/18 |
SourceForge
| 2023/04/17 |
確定申告
| 2023/02/19 |
さらば「まぐまぐ」
| 2023/01/09 |
風猷縄学
| 2022/11/23 |
printf(format_str, date, user.name, ...) ... parent.is_nil? ? 'hello' : 'world'
post :create, user: { email: 'x@example.com' }
... | ruby -ane 'print($&, "\n") if $_ =~ /...().../'
... | ruby -ane 'print($1, "\n") if $_ =~ /...().../'
実行時、行内容付きで表示してくれる機能。bash の set -x と同様。 debug に便利:
$ ruby -rtracer ...
require 'digest/md5'
Digest::MD5.hexdigest('abc') Digest::MD5.file('/etc/group')
require 'json' s = File.open('/tmp/x').read h = JSON.parse(s)
File.open('/tmp/x.out', 'w'){|f| f.puts(JSON.pretty_generate(h)) }
$ sudo gem install rcov
$ rcov
実行トレースを取る方法: tracer.rb を require する。例:
ruby -rtracer script/generate ...
my_hash.each { |k, v| my_hash[k] = v.upcase }
my_hash.inject({}) { |h, (k, v)| h[k] = v.upcase; h }
DBI 野良ビルド
ruby setup.rb config --with=dbi,dbd_pg ruby setup.rb setup sudo ruby setup.rb install
2008-01-17, openssl がなかったので入れる。 desktop は Vine3.x + ruby 1.8.2(2004-12-25) の野良ビルドなので openssl も野良install が必要:
(1.8.2 ソースをダウンロード) $ umask 022 $ cd ruby-1.8.2/ext/openssl $ ruby extconf.rb $ make $ sudo make install
a = b || c b が nil でないなら b が a に代入される b が nil なら c が a に代入される
(2014/04/01 時点、redmine に移行したのでこの情報は古い)。
https://www.chiliproject.org/projects/chiliproject/wiki/Installation より。
以下、ME, MY_GROUP は Linux のユーザ, グループ。
chili: | 3.8.0 |
Passenger: | 3.0.17 |
Ruby: | 1.9.3 |
Postgresql: | 9.1 |
OS: | Ubuntu 12.04 |
$ sudo mkdir /home/chili $ sudo chown ME:MY_GROUP /home/chili $ cd /home/chili $ tar zxvf /tmp/chiliproject-3.8.0/ $ bundle install --without test development
$ bundle exec rake generate_session_store $ RAILS_ENV=production bundle exec rake db:create $ RAILS_ENV=production bundle exec rake db:migrate $ RAILS_ENV=production bundle exec rake redmine:load_default_data
$ mkdir -p tmp public/plugin_assets $ sudo chown -R ME:MY_GROUP files log tmp public/plugin_assets $ sudo chmod -R 755 files log tmp public/plugin_assets
<IfModule mod_passenger.c> PassengerRoot /home/ruby/ruby-1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.17 PassengerRuby /home/ruby/ruby-1.9.3-p194/bin/ruby </IfModule>
LoadModule passenger_module /home/ruby/ruby-1.9.3-p194/lib/ruby/gems/1.9.1/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
#-------------------------------------------------------- # Chili(using rails2.3.x) passenger setup #-------------------------------------------------------- RailsBaseURI /chili <Directory /home/chili/chiliproject-3.8.0/public> Options -MultiViews </Directory>
Ruby (Rack) application could not be started : No such file or directory - config.ru
$ sudo a2enmod passenger
$ sudo service apache2 restart
引数も上書きするため、某自前クラスインスタンスにて rails の params を書き換えてしまい、 paginate でページリンクを押したときに初めて発覚するバグを誘発してしまった。
and と &&, or と || は意味は同じだが、優先度は...
高い: && → || → (or/and) :低い
とのこと。or と and が同じ優先度とは... はまった。
a = b || c
"a は b さもなくば c"
$ sudo apt install make libreadline6-dev libssl-dev
$ umask 002 $ tar zxvf ruby-3.1.0.tar.gz $ cd ruby-3.1.0 $ ./configure --prefix /home/ruby/ruby-3.1.0 \ --disable-install-doc --disable-install-rdoc $ make # 12th Gen Intel(R) Core(TM) i7-12700K で約2分01秒。速っ! $ make test $ (cd /home; test -d ruby || sudo mkdir ruby && sudo chown [USER] ruby) # /home/ruby が無ければ作成 $ make install
$ umask 002 $ tar zxvf ruby-2.5.5.tar.gz $ cd ruby2.5.5 $ ./configure --prefix /home/ruby/ruby-2.5.5 \ --disable-install-doc --disable-install-rdoc $ make # Thinkpad x250 (Core i7) で約3分30秒 $ make test $ (cd /home; test -d ruby || sudo mkdir ruby && sudo chown [USER] ruby) # /home/ruby が無ければ作成 $ make install
$ sudo apt-get install make gcc zlib1g-dev libreadline6-dev libssl-dev \ postgresql-server-dev-9.4 libyaml-dev \ libmagickcore-dev libmagickwand-dev \ libffi-dev \ libsqlite3-dev
$ umask 002 $ tar zxvf ruby-2.2.2.tar.gz $ cd ruby2.2.2 $ ./configure --prefix /home/ruby/ruby-2.2.2-64bit \ --disable-install-doc --disable-install-rdoc $ make # Thinkpad x250 (Core i7) で約2分30秒 $ make test $ (cd /home; test -d ruby || sudo mkdir ruby && sudo chown [USER] ruby) # /home/ruby が無ければ作成 $ make install
libffi-dev がないと、make 時に下記エラーが出る:$ sudo apt-get install make gcc zlib1g-dev libreadline6-dev libssl-dev \ postgresql-server-dev-9.3 libyaml-dev \ libmagickcore-dev libmagickwand-dev \ libffi-dev \ libsqlite3-dev
linking shared-object fiddle.so /usr/bin/ld: ./libffi-3.2.1/.libs/libffi.a(raw_api.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC ./libffi-3.2.1/.libs/libffi.a: error adding symbols: Bad value collect2: error: ld returned 1 exit status make[2]: *** [../../.ext/x86_64-linux/fiddle.so] Error 1 make[2]: Leaving directory `/home/[MYNAME]/temp/ruby-2.2.0/ext/fiddle' make[1]: *** [ext/fiddle/all] Error 2
(download 2.2.0) $ umask 002 $ ./configure --prefix /home/ruby/ruby-2.2.0-64bit \ --disable-install-doc --disable-install-rdoc $ make # Thinkpad X220 (Core i5) で約4分 # Dell PowerEdge R200 (Celeron 430 1.8G) で約9分 $ make test $ make install
$ sudo apt-get install make gcc zlib1g-dev libreadline6-dev libssl-dev \ postgresql-server-dev-9.3 libyaml-dev \ libmagickcore-dev libmagickwand-dev \ libsqlite3-dev
(download 2.1.2) $ ./configure --prefix /home/ruby/ruby-2.1.2-64bit \ --disable-install-doc --disable-install-rdoc $ make # Thinkpad X220 (Core i5) Ubuntu-11.10 non-enc-fs で約5分 # VAIO Core i7 + vmware Ubuntu-12.04 で約5分 # Shuttle XS35GT (Atom D510 1.6G) で約20分 # Shuttle XS35V3 (Atom D2700 2.1G) で約15分 # Shuttle DS47 (Celeron 847) で約13分 $ make test $ make install
$ sudo apt-get install openjdk-7-jdk
これまで通りとは行かなかった。下記ステップにてインストール:
$ ./configure --prefix /home/ruby/ruby-2.1.1 \ --disable-install-doc --disable-install-rdoc
※ configure の追加オプションがないと、make install 時に下記のエラーが:
Generating RDoc documentation Directory .ext/rdoc already exists, but it looks like it isn't an RDoc directory. Because RDoc doesn't want to risk destroying any of your existing files, you'll need to specify a different output directory name (using the --opoption) ...
Ruby 1.9.* on Ubuntu-12.04 と同じ。無事インストールされた。
Ruby 1.9.3-p286, Ruby 1.9.3-p194 on Ubuntu-11.10 と同様だが、 以下でハマった:
bundle install で以下エラー発生:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /home/ruby/ruby-1.9.3-p327/bin/ruby extconf.rb checking for vm_core.h... no checking for vm_core.h... no Makefile creation failed ************************************************************************** No source for ruby-1.9.3-p327 provided with debugger-ruby_core_source gem. ************************************************************************** *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
ググると、色々皆さん困っている様子(^_^;。 https://github.com/cldwalker/debugger/issues/12 で解決できた:
$ gem install ruby-debug19 # 数分かかる $ gem install debugger-linecache -v '1.1.2' $ bundle install # リトライ!
次節 Ruby 1.9.3-p194 on Ubuntu-11.10 と同様。次節参照。
rvm は一旦置いて、plain ruby を使う。 ※ ただし、gdbm を使用するなら。
rvm 1.9.2-p318 で gdbm が動かない(データが壊れる) (サンプルソース)。
一応 rvm の作者に問題点を mail してみた(2012/04/27)。
後は返事待ち。 とは言え、待てないので、検証目的でソースから入れて上記サンプルを動かすと、 普通に動く。ということで、こちらを使用することにする。
$ sudo apt-get install make gcc zlib1g-dev libreadline6-dev libssl-dev \ postgresql-server-dev-9.1 libgdbm-dev libyaml-dev
(download 1.9.3-p194) $ ./configure --prefix /home/ruby/ruby-1.9.3-p194 $ make # Thinkpad X220 (Core i5) Ubuntu-11.10 non-enc-fs で約5分 # VAIO Core i7 + vmware Ubuntu-12.04 で約5分 # Shuttle XS35GT (Atom D510 1.6G) で約20分 # Shuttle XS35V3 (Atom D2700 2.1G) で約15分 # Shuttle DS47 (Celeron 847) で約13分 $ make test $ make install
1.8.* と 1.9.* の両方を使用する必要に迫られた。 rvm の存在は知ってはいたが、まだ当時信用していなかったので、 /home/ruby/ 以下に両版をインストールし、ユーザ側を my, my1.9 として (後者が ruby 1.9 用)使いわけようとした。 が、いざそうやってみると、my1.9 でログイン中にメールを見たい時、 my1.9 で thunderbird のセットアップをする必要があったり、my にログインして 見たり、というのがかなりわずらわしいことが分かってきた。
…で、rvm を導入してみたのだった。
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
$ rvm ...
$ rvm install 1.8.7 $ rvm install 1.9.2
$ rvm 1.9.2
1.9.2-p290 :001 > require 'gdbm' LoadError: Could not open library 'gdbm': gdbm: cannot open shared object file: No such file or directory. Could not open library 'libgdbm.so': libgdbm.so: cannot open shared object file: No such file or directory
$ gem uninstall gdbm
$ sudo apt-get install libgdbm-dev
$ gem install gdbm
ok(^_^)/
Ubuntu 11.10 に ruby 1.8.6 をインストールしようとすると以下のエラーが発生:
expected ‘struct stack_st_X509_CRL *’ but argument is of type ‘int *’
色々ググッて、下記で解決した:
$ rvm get head $ rvm reinstall 1.8.6
以下は却下した案:
$ sudo apt-get install gcc zlib1g-dev libreadline6-dev libssl-dev
(download 1.9.2-p290)
$ ./configure --prefix /home/ruby/ruby-1.9.2-p290 $ make # Thinkpad X40 Ubuntu 11.04 encryptfs で約28分 $ make test $ make install
$ gem install pg -- --with-pg-config=/home/pg/postgresql-9.0.4/bin/pg_config
$ sudo apt-get install libpq-dev $ gem install pg
$ gem install rails -v 3.1
$ gem install mongrel --pre
$ rails new myapp -d postgresql
gem 'execjs' gem 'therubyracer'
$ bundle install
gem 'rake', '0.8.7'
$ rails generate scaffold page title:string slug:string body:text --timesta $ rake db:create rake db:migrate $
Ruby 1.8.7-p249 も同様。
$ sudo apt-get install gcc zlib1g-dev libreadline6-dev libssl-dev postgresql-server-dev-8.4 (download 1.8.7-p249) $ ./configure --prefix /home/ruby/ruby-1.8.7-p334 $ make $ make test $ make install
後は必要な gem パッケージをインストール。$ /home/ruby/ruby-1.8.7-p334/bin/ruby setup.rb
$ gem install rdoc -v2.4.3
$ gem install will_paginate -v2.3.11
Ruby 1.8.6-p368 は Ubuntu-10.04 にはインストールできない。make test で 実数の扱いでエラーとなるバグがあるため。
$ gem install bundle
$ bundle gem my_package
$ $EDITOR lib/edgarj/version.rb $ bundle install
$ rake test
$ git commit -v -a
$ rake app:edgarj:build_gem
$ sudo gem install pkg/edgarj-#.#.#.gem $ cd [APP]; rake test
$ gem push pkg/my-package-0.1.0.gem
NOTE: