久しぶりにアプリケーションを作って rails server したらエラーが出た
Ruby のバージョンを 1.9.3p392、rails のバージョンを 4.0.0 にした後、しばらく放置していたので久しぶりにアプリケーションを作って起動しようとしたらエラーが出た。
$ rails server /usr/local/lib/ruby/gems/1.9.1/gems/execjs-2.0.1/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) from /usr/local/lib/ruby/gems/1.9.1/gems/execjs-2.0.1/lib/execjs.rb:5:in `<module:ExecJS>' from /usr/local/lib/ruby/gems/1.9.1/gems/execjs-2.0.1/lib/execjs.rb:4:in `<top (required)>' from /usr/local/lib/ruby/gems/1.9.1/gems/uglifier-2.2.1/lib/uglifier.rb:3:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/uglifier-2.2.1/lib/uglifier.rb:3:in `<top (required)>' from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require' from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each' from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require' from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each' from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.3.5/lib/bundler.rb:132:in `require' from /home/iishun/rails/iishun/config/application.rb:7:in `<top (required)>' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap' from /usr/local/lib/ruby/gems/1.9.1/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>' from bin/rails:4:in `require' from bin/rails:4:in `<main>'
どうやら下記の記述を Gemfile に書き加えると解消するようなので、
gem 'execjs' gem 'therubyracer'
もう一度 bundle install をしてあげたら無事立ち上がった。
require 'oauth' と controller に記述したら LoadError になった件
Gemfile に下記一行を記述して、
gem 'oauth-plugin', '>= 0.4.0.pre1'
bundle してあげるだけ。
bundle install --without=production
Ruby のコマンドライン引数を使って Twitter に投稿
■2012.5.26 追記
自分は英字の前後に半角スペースを入れて投稿するため、そうなってもよしなに投稿できるように修正しました。
-
- -
ほぼ写経
# coding: utf-8 require 'rubygems' require 'oauth' tweet = ARGV.join(" ") consumer_key = '{consumer_key}' consumer_secret = '{consumer_secret}' access_token = '{access_token}' access_token_secret = '{access_token_secret} consumerObj = OAuth::Consumer.new( consumer_key, consumer_secret, :site => 'http://twitter.com' ) accessObj = OAuth::AccessToken.new( consumerObj, access_token, access_token_secret ) accessObj.post( '/statuses/update.json', 'status' => tweet, 'source' => '{source}' )
適当なファイル名 (ex: tweet.rb) で保存して、下記のコマンドで実行する。
引数で渡した文字列がつぶやきとして Twitter に投稿されれば成功。
bundle install で Gem::RemoteFetcher::FetchError になる
■2012.9.19 追記
すんごい前になりますが、以下のコマンドを叩くことで解決するというコメントをいただきました。
$ gem update --system
情報ありがとうございます!
-
- -
$ rails new sample --skip-bundle
した後に、
$ bundle install
すると、途中で
Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://bb-m.rubygems.org/gems/*.gem)
というエラーが出て bundle に失敗してしまい、なかなか先に進めなくなってしまった。どうやらこのエラー、リダイレクト 11 回以上発生した際に起こるものらしい。ということはこの URL が怪しいと疑ってみた。もしかしたら SSL で転けてるのかもしれない。
そこで、Gemfile の 1 行目を
source 'https://rubygems.org'
から
source 'http://rubygems.org'
にしてみた (s を取ってみた) ところ、bundle install に成功……したはいいけれどこれであってるのかなぁ。追々調査してみることにする。
Xcode 4.2 の release 問題
■2012.4.16 追記
メモリ解放に関するコードは「書かなくてもいいよ」なニュアンスで、推奨ではありませんでした。
-
- -
Xcode 4.2 (iOS5) からはメモリ解放の必要が無くなったようで、dealloc メソッド実装したままコンパイルしたら以下のようなエラーが出てコンパイルに失敗。
"autorelease" release is unavailable: not available in automatic reference counting mode
原因は Apple LLVM compiler 3.0 というコンパイラが原因の様子。dealloc メソッドを省略してしまえば良いらしいけれど、プロジェクトの Build Settings から値を変えてることでも回避できるみたい。
プロジェクトをダブルクリック > Build Settings タブを選択 > Apple LLVM compile 3.0 - Language 項の Objective-C Automatic Reference Counting を「No」に変更
Poderosa のオプション設定が保存されない
Windows 7 + 64bit で Poderosa の [オプション設定] が保存されないときの解決策。
コマンドプロンプトを管理者として実行。
\Windows\System32\cms
以下のコマンドを実行。
cd /d "%ProgramFiles(x86)%\Poderosa" echo. >options.conf #ファイルが存在しないときは生成 cacls options.conf /e /g Users:C echo. >ssh_known_host #ファイルが存在しないときは生成 cacls ssh_known_hosts /e /g Users:C
レジストリを追加し、Cygwin 1.7 使用時の警告を回避。
reg add "HKLM\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/" /v native /t REG_SZ /d C:\cygwin
.vimrc の設定
文字判定の部分だけ。
if &encoding !=# 'utf-8' set encoding=japan set fileencoding=japan endif if has('iconv') let s:enc_euc = 'euc-jp' let s:enc_jis = 'iso-2022-jp' " iconvがeucJP-msに対応しているかをチェック if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb" let s:enc_euc = 'eucjp-ms' let s:enc_jis = 'iso-2022-jp-3' " iconvがJISX0213に対応しているかをチェック elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb" let s:enc_euc = 'euc-jisx0213' let s:enc_jis = 'iso-2022-jp-3' endif " fileencodingsを構築 if &encoding ==# 'utf-8' let s:fileencodings_default = &fileencodings let &fileencodings = s:enc_jis .','. s:enc_euc if s:fileencodings_default =~ 'utf-8' let &fileencodings = &fileencodings .','. s:fileencodings_default let &fileencodings = substitute(&fileencodings, "utf-8", "utf-8,cp932", "g") else let &fileencodings = &fileencodings .",cp932,". s:fileencodings_default endif unlet s:fileencodings_default else let &fileencodings = &fileencodings .','. s:enc_jis set fileencodings+=utf-8,ucs-2le,ucs-2 if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$' set fileencodings+=cp932 set fileencodings-=euc-jp set fileencodings-=euc-jisx0213 set fileencodings-=eucjp-ms let &encoding = s:enc_euc let &fileencoding = s:enc_euc else let &fileencodings = &fileencodings .','. s:enc_euc endif endif " 定数を処分 unlet s:enc_euc unlet s:enc_jis endif " 日本語を含まない場合は fileencoding に encoding を使うようにする if has('autocmd') function! AU_ReCheck_FENC() if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0 let &fileencoding=&encoding endif endfunction autocmd BufReadPost * call AU_ReCheck_FENC() endif " 改行コードの自動認識 set fileformats=unix,dos,mac " □とか○の文字があってもカーソル位置がずれないようにする if exists('&ambiwidth') set ambiwidth=double endif