selenium-webdriver のインストール
Selenium を使用してちょっとしたブラウザ操作をするために、 selenium-webdriver をインストールしようとした。
http://rubygems.org/gems/selenium-webdriver
ここにある通りのコマンドを実行
$ gem install selenium-webdriver ERROR: Could not find a valid gem 'selenium-webdriver' (>= 0) in any repository ERROR: Possible alternatives: selenium-webdriver
あれ…。そんな gem は見つからないって…。
$ gem install "selenium-webdriver" Fetching: multi_json-1.3.6.gem (100%) Fetching: rubyzip-0.9.9.gem (100%) Fetching: ffi-1.1.5.gem (100%) Building native extensions. This could take a while... Fetching: childprocess-0.3.5.gem (100%) Fetching: addressable-2.3.2.gem (100%) Fetching: libwebsocket-0.1.5.gem (100%) Fetching: selenium-webdriver-2.25.0.gem (100%) Successfully installed multi_json-1.3.6 Successfully installed rubyzip-0.9.9 Successfully installed ffi-1.1.5 Successfully installed childprocess-0.3.5 Successfully installed addressable-2.3.2 Successfully installed libwebsocket-0.1.5 Successfully installed selenium-webdriver-2.25.0 7 gems installed
クォーテーションを付けることで解決しました。
日本語入力でタブを使えるようにする
とてもいいエディタで満足しているが、日本語入力にちょっと弱い。
google 日本語入力を使用しているが、予測変換候補をタブで選ぼうとするとタブが入力されてしまう。
ctrl + n や矢印キーでもちろんできるが、どうも癖がついている。
そこで、デフォルトのキーバインドでタブに割り当てられている一部をコメント化して解決した。
// { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} }, // { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false}, // "context": // [ // { "key": "setting.tab_completion", "operator": "equal", "operand": true } // ] // },
これの弊害は snippet をタブで入力できなくなるということだ。
Show Completions(ctrl + space) で入力する。
どっちを取るか…。
SublimeText2 を使い始める
SublimeText2 が話題になっているので本格的に使い始めることにした。
以前、インストールして少し試してみたが、すぐに emacs に戻った。
ただ、twitter 上の TL 上でまた話題になっていたので再度使ってみることにした。
以下からダウンロードする。
Windows, Mac, Linux とどの環境でも使えるのがうれしい。
サイドバーにフォルダ表示ができ、 TextMate と同じような感覚で使える。
TextMate の Bundle も使える。
(私は TextMate を使ったことはない!)
まだぜんぜん使いこなせてないが、 Rails の開発で便利なプラグインを入れてみることにした。
Package Controll のインストール
名前でわかるように、プラグインを管理するもの。 github 上から所定の場所にクローンして
使用するというのも可能だが、これを使えば自動でインストールをしてくれる。
http://wbond.net/sublime_packages/package_control
以下のコマンドでコンソールを開く。
ctrl + `
以下を入力
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'
'Please restart Sublime Text to finish installation' が表示されたら再起動してインストール完了。
Sublime Text 2 Ruby Tests のインストール
Rspec や Cucumber などのテストをその場で実行できる。
テストのビューが下部にできるのでターミナル等に移動しなくていいのが楽。
https://github.com/maltize/sublime-text-2-ruby-tests
以下のコマンドでコマンドパレットを開く
ctrl + shift + p
install と打てば、「Package Controll: Install Package」が出てくるので選択する。
登録されているリポジトリからインストール可能なパッケージの一覧を作成して表示されるので
「RubyTest」と入力すれば1つになるので選択すればインストール完了!
後は、上記URLの通り、設定ファイルを置いて Rspec や Cucumber の実行方法を記載すればOK。
ctrl + shift + r # カーソルがある行を指定してテストを実行 ctrl + shift + t # 現在のファイルでテストを実行
Mac ではまったのが、「/bin/sh bundle exec rspec」が見つからんというエラーで実行できなかった。
標準で zsh にしているのが原因かなと思い、調べていたら解決方法があった。
http://www.sublimetext.com/docs/2/osx_command_line.html
上記URLのようにシンボリックリンクを生成し、パスを通してターミナル上から起動すれば問題なくテストが実行された。
ランチャーから起動していたのがいけなかったようだ。
その他、「ctrl + .」でプロダクトコードとテストコードの切り替えができる。
おわりに
エディタ自体の機能をあまり紹介していなが、実際に使ってみて便利だなと思うところをこれからも書いていきたい。
もっともっとたくさんプラグインや豊富な機能満載なのでライセンスを購入しようと考えている。
他のプラグイン…
・ Ruby 1.9 Hash Converter: 1.9記法に変換してくれる
・ Git: git コマンドが実行できる
などなど、パッケージをそれっぽいワードで検索してみるといろいろでてくると思う。
ちなみに、拡張は Python で書かれている。
勉強したくなってきた…。
リクエストパラメータをフォームの要素から作る
画面上のフォームの情報をもとにサブミットではなく、リンクやAjax通信をしたいことがあるはず。
上部に検索フォームがあって、そのフォーム外の下の方にダウンロードボタンがあったりとか。
そんなときに便利な jQuery のメソッドが2つ。
$('#hoge_form').serialize(); $('#hoge_form').serializeArray();
serialize()
form をパラメータに変換してくれる。
$('#hoge_form').serialize(); // => "foo=bar&fizz=buzz"
serializeArray()
上記の serialize と同様だが、返す値が JSON 形式になっている。
Ajax のリクエストパラメータなどに使える。
Hash の default_proc が便利
Hash を初期化した際にブロックを記述しておくと、存在しないキーを呼び出したときに実行される。
hash = Hash.new { |h, k| h[k] = [] }
または、 default_proc= で後から指定することも可能。
hash.default_proc = ->(h, k) { h[k] = [] }
例えば、上記のコードが無かった場合に下記のコードはエラーになる
hash = Hash.new hash[:a] << 'aiueo'
特定のキーに対して配列で順次格納したい場合とかに有効だと思う。
nginx + unicorn + redmine 2.0 を ubuntu で動かしてみた。
先日、redmine 2.0 にバージョンアップされました。
Rails 3.2.3 で動いている最新バージョンです。
Ruby を触ったときないときに Passenger で動かす Redmine を
サイトを見ながらやりましたが何をやっていたのか全然理解していませんでした。
今は業務でも nginx + unicorn + Rails を使用しているのでやってみようと思いました。
以下の環境にインストールしてみる
Redmine のインストール
だいたいは公式サイトと同じなので参照してください。
1. svn からチェックアウトしてソースを取得。
svn checkout http://redmine.rubyforge.org/svn/branches/2.0-stable redmine cd redmine
2. bundle install
rmagick, postgresql, sqlite はインストールしません。
bundle install --without development test rmagick postgresql sqlite --path vendor/bundle
3. mysql でユーザだデータベースを作成
create database redmine character set utf8; create user 'redmine'@'localhost' identified by 'my_password'; grant all privileges on redmine.* to 'redmine'@'localhost';
4. データベース設定ファイルの設定
cp config/database.yml.example config/database.yml
コピーしたファイルの編集する。コメント解除し少しだけ変える。
production: adapter: mysql2 # mysql2 に変更 database: redmine # 3.で作成したデータベース名 host: localhost username: redmine # 3.で作成したユーザ password: password # 3.で作成したユーザのパスワード encoding: utf8
5. rake コマンドでちょっと設定する
bundle exec rake generate_secret_token RAILS_ENV=production bundle exec rake db:migrate RAILS_ENV=production bundle exec rake redmine:load_default_data # このあと、言語を選択するので ja と入力
6. webrick で起動確認
bundle exec rails s -e production
http://localhost:3000/ にアクセスして Redmine の画面が出れば成功です!
unicron のインストール
1. GemFile.local を作成
追加で gem を作成したい場合は GemFile.local の中に記述すればOK。
gem 'unicorn'
2. bundle install
bundle
3. config/unicorn.rb を作成して設定する
こことほぼ同じです。
worker_processes 2 listen '/tmp/redmine.sock' stderr_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) stdout_path File.expand_path('log/unicorn.log', ENV['RAILS_ROOT']) preload_app true before_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! old_pid = "#{ server.config[:pid] }.oldbin" unless old_pid == server.pid begin Process.kill :QUIT, File.read(old_pid).to_i rescue Errno::ENOENT, Errno::ESRCH end end end after_fork do |server, worker| defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end
4. unicorn 起動
webrick を起動していた場合は ctrl + c で終了しておいてください。
bundle exec unicorn_rails -c config/unicorn.rb -E production -D
nginx のインストール
ソースからインストールしました。
PCRE(Perl 互換正規表現ライブラリ)がインストールされていないと make でエラーするので
sudo apt-get install libpcre3-dev
を実行しました。
1. インストール
wget http://nginx.org/download/nginx-1.2.0.tar.gz tar zxvf nginx-1.2.0.tar.gz cd nginx-1.2.0 ./configure make sudo make install
2. 設定 /usr/local/nginx/conf/nginx.conf
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream redmine { server unix:/tmp/redmine.sock; } server { listen 80; server_name localhost; root /path/to/redmine; error_log /path/to/redmine/log/nginx_error.log; try_files $uri @unicorn; location @unicorn { if (-f $request_filename) { break; } proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://redmine; } } }
だいたいデフォルトをそのまま使用し、unicorn 用にリバースプロキシの設定をします。
※ error_page 等は省略しました。
3. 起動
sudo /usr/local/nginx/sbin/nginx
これで http://localhost にアクセスすると Redmine が表示されるはずです!
RailsInstaller を使ってみる
RailsInstaller とは Windows で Ruby on Rails の開発をしやすいように主に以下の一気にインストールしてくれるものである。
- Ruby
- Ruby on Rails
- Git
- SQLite
- Bundler
- RubyInstaller Development Kit
これだけあれば一通り開発が行える。
インストール
ここからダウンロード
基本的にはインストーラーを起動して数回クリックするだけ。
注意したいのは、 Git が既にインストールされている場合は2重で入ることになるので、
コンテキストメニューの Git 関連がダブってしまう。先にアンインストールしておくといい。
(インストールするものを選ぶことはできず、強制的に全てインストールされる。)
インストールが終わったら Git の設定で名前とメールアドレスを設定すれば完了。
TODO サンプルアプリが C:\Sites 以下にできあがる。(ちょっと迷惑…)
Rails を動かす
とりあえず、サンプルアプリを動かしてみる。アプリのディレクトリで
$ bundle install --path vendor\bundle
さくっとうまくいった。あれ、sqlite3 が入っていない気がする…。
$ bundle exec rake db:create db:migrate
エラー! sqlite3 がないよー、って。そりゃそうだ。インストールされてなかったし。
Gemfile をのぞく。
platform :ruby do gem 'mysql2', '~> 0.2.7' gem 'pg' gem 'sqlite3' gem 'unicorn' end
sqlite3 をブロックの外に出して、再度 bundle install と migrate を実行。
うまくいったのでサーバを起動してみる。
$ bundle exec rails s
無事、画面がでました。
Rails のバージョンは 3.0.9 と古いので最新バージョンで試してみましょう。
Ruby のバージョンは最新の 1.9.3 なんだけれども…。