Rails を Windows にインストールしてみたのだが
pcを新しくしてからまだ Rails を立ち上げてなかった。Ruby もインストールしていなかったので、インストールからやってみた。殆どトラブルなしに Rails の確認画面まで進めたのは初めてかもしれない。
JUGEMテーマ:Ruby on Rails!
- 2018.10.12 Friday
- Ruby
- 20:59
- comments(0)
- trackbacks(0)
- by phinloda
pcを新しくしてからまだ Rails を立ち上げてなかった。Ruby もインストールしていなかったので、インストールからやってみた。殆どトラブルなしに Rails の確認画面まで進めたのは初めてかもしれない。
JUGEMテーマ:Ruby on Rails!
Gemfile に http_accept_language を追加して bundle install すればいいだけのはずなのだが、なぜかインストールしてくれない。
かなり悩んだが、結局違うディレクトリの Gemfile を編集していただけだった(笑)。
JUGEMテーマ:Ruby on Rails!
Rails がよく分かっていないので、何かいろんな所でキャッシュされていそうで怪しい箇所満載なのだが、Rails を再起動しても更新してくれない。だいたいこういうケースはブラウザ側が javascript をキャッシュしているに決まっている。と予想したら案の定で、スーパーリロード (ctrl + F5) で解決。
javascript 側に ?hogehoge みたいな id 振るのが定番だと思うが、ま、そこまでしなくてもいいか。自動的にやってくれるツールがあるような気がするが、探すモチベーションがわかない。
そもそも、Rails 側でキャッシュしてサーバー再起動が必要ってどういう場合なんだろ。 config/development.rb は、
config.action_controller.perform_caching = true
この設定なので、キャッシュが有効になっているはずだが、今のところいろいろ変更しても再起動なしで画面が変わっているので、よく分かっていない。
JUGEMテーマ:Ruby on Rails!
Rails5で、ついうっかりしてビックリするのが InvalidAuthenticityToken。 Controller のクラス定義の先頭に次のように書けば、とりあえず解決する。
class HogeController < ApplicationController protect_from_forgery except: :index
index の部分は実際に呼び出すメソッドに変更する。安易にこの方法で解決していいのか、というのはちょっと気になっている。
JUGEMテーマ:Ruby on Rails!
コードをちょろっと書いた後に再起動しようとしたら、起動すらしなくなった。(笑)
workspace を指定した後、こんなエラーが出てしまう。
結局、workspace の下のファイルを全部削除してやり直し。Aptana は uninstall した。
JUGEMテーマ:Ruby on Rails!
Rails ってテーマ探したら最新の投稿が 2014年だったので、何か選択ミスった気がしてきたけど、気にしない。 Eclipse からインストールし直して、本体は Oxygen.2 になった。 Ruby はダウンロードサイトを見ると、2.5 は使うな(笑)とか太字で書いてあるので、2.4.3-1 (x64) をインストール。 Rails は何も考えずに gem install rails したら、5.1.4 が入ったようだ。
まあここまではokとして、その後の Aptina Studio 3 Plugin を入れるところでハマった。 次のようなダイアログが出てくるし、困ったものだ。
Incompatible debugger version.
The remote debugger version might not match the expected protocol version (2006040705).
JUGEMテーマ:Ruby on Rails!
最近ちょっとうっかり Ruby から離れてしまったらバージョンが全然ピンと来ない。Rails は書店で見た感じでは4から5に移行中というところか。とりあえず最新版を入れてみることにした。
JUGEMテーマ:コンピュータ
更新した機能がすぐに反映されない。 何気に apache を再起動したら、更新した機能が反映されたのだが、そういうものだっけ?
Redmine のインストールなんて簡単だろと思ったのだが、巷では難しいという噂もあるようだ。 実際、何度もインストールしているから難しいというレベルではないと思うのだが、そう簡単ではないとしたら、理由はハッキリしていて、redmine.jp に書いてある通りにやったら失敗することがあるからだろう。 昔からそうだったような気がするし、今更驚くような話ではないけど。
とりあえず、手順をメモっておく。 前提条件。 Windows は 7。 Ruby は 1.9.3 を使った。 MySQL は xampp をインストールしたときに入ったのを使っているのでよく分からなかったが、xampp のコンパネでphpMyAdmin を実行して確認したら、5.6.16 だった。 今回選択したバージョンは次の通り。
rubyinstaller-1.9.3-p545.exe
xampp-win32-1.8.3-4-VC11-installer.exe
redmine-2.5.1.zip
debug_kit-master.zip
debug_kit のバージョンが分からんな。
redmine の公式サイトのをインストール手順は、次のページ。
http://redmine.jp/guide/RedmineInstall/
基本的にこの手順通りにする。
1. リリースパッケージをダウンロード。今回は前述の redmine-2.5.1.zip をダウンロードして、¥usr¥local¥redmine-2.5.1 に展開した。
2. まずは bundler をインストールする。公式サイトには、gem install bundler を実行しろと書いてある。この通りやったら次の
bundle install --without development test
を実行したところで、sudo でないとダメといって失敗した。Windows で sudo ってどうするのか分からないなぁ。 ググっても分からんが、同じようなエラーになった人がいることは分かった。 でも解決法が分からない。
とりあえず以前は成功していたのだろうと予想して、バージョンダウンしよう。 ということで、bundler は最新版ではなく 1.5.3 を使う。
gem install bundler --version "=1.5.3"
もしかしたら、これを見ている皆さんは、最新版でも ok になっているかもしれない。 これ書いている時点ではアウト。
なお、私の環境は imagemagick が入ってないので、公式ページに書いてあるように、次のオプションを選択した。
bundle install --without development test rmagick.
3. 空のデータベースを作成する。xampp で mysqld を起動した後、書いてある通り。
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';
一応蛇足しておくけど、パスワードにmy_password を指定するようなバカなことはしないこと。
4. config/database.yml の作成 これは簡単。
adapter は mysql2 を使う。 mysql2 はインストールしていないので、先に入れておく。 このときに、mysql が入っているディレクトリを指定する。 私の環境だと次の通り。
gem install mysql2 -- '--with-mysql-lib="D:¥usr¥local¥xampp¥mysql¥lib" --with-mysql-include="D:¥usr¥local¥xampp¥mysql¥include"
5. セッションストア秘密鍵を作る。Redmine 2.x だから、
rake generate_secret_token
を実行するわけだが、mysql.dll がないといって失敗した。 しかも、対応方法は公式ページに書いてあるのだが、
場合によってはlibmysql.dllをruby/binディレクトリにコピーすることが必要です。
ありがたいな。 ということで、そうすればok。ところで、
libmysql.dllはどれでもよいわけではありません。次のURLのものが動作するようです。
とリンクが書いてあるのだが、リンク先に接続できない。orz
こんな雑魚にやられている暇はないので、xampp の mysql¥lib の下にある libmysql.dll を ruby¥bin ディレクトリに無意識にコピーして解決。 どれでもよいわけではないと言われると心配だが、とりあえず
rake generate_secret_token
が動いたのでよしとする。実行したら何もメッセージ出ないでプロンプトが表示されたけど、それって動いたんだよな、多分。便りのないのはよい知らせというし。
ということで、次は
6. migrate。Windows の場合シェルの都合て、Windows版のやり方の通りにやればいいのだが、
set RAILS_ENV=production
rake db:migrate
今度はウザい位メッセージが出まくる。 エンドレスエイトかと思ったが、放置していたら止まったので無問題。
7.
rake redmine:load_default_data
これは一瞬で終わった。 大丈夫かな。言語に ja を選んでしまったが、en のままの方がよかったか、と思ったのは後の祭り。まあどうでもいい。
8. permission は Windows だからパス
9. WEBrick で動作確認。
ruby script/rails server webrick -e production
ok。localhost:3000 でいつもの画面が出た。ここまで来たら後は大丈夫だろう。確かメール設定とかで前回は一悶着あったような気もするが気にしない。
Mechanize の AGENT_ALIASES に定義されている user agent は次の通り。
Mechanize Linux Firefox Linux Konqueror Linux Mozilla Mac FireFox Mac Mozilla Mac Safari 4 Mac Safari Windows IE 6 Windows IE 7 Windows IE 8 Windows IE 9 Windows Mozilla iPhone
Windows Firefox がない。 そこで、手元の Firefox 15.0.1 からアクセスしたときの内容をパケットをモニタして調べて、 同じものが出るように指定してみた。 @agent は Mechanize.new であらかじめインスタンスをしてあるとして、 次のようなコードで実装できる。
@agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1'