ラベル Rails3 の投稿を表示しています。 すべての投稿を表示
ラベル Rails3 の投稿を表示しています。 すべての投稿を表示

2012-07-20

Rails3で改行を<br />に変換して表示する

ぐぐってみると
app/helpers/application_helper.rb
に次のヘルパーメソッド追加してやればいけるぜb
  def hbr(str)
    str = html_escape(str)
    str.gsub(/\r\n|\r|\n/, "<br />")
  end
なんて記事が沢山ヒットするのですが、これはRails2までで、Rails3だとviewの<%= %>が標準でHTMLエスケープするようになったものだから<br />とそのまま表示されてしまいます。
そんな訳でRails3用に書きなおすとこんな感じ
  def hbr(str)
    h(str).gsub(/(\r\n?)|(\n)/, "<br />").html_safe
  end
hogeという変数の改行を
に変換して表示したい場合は
<%=hbr hoge %>
とviewの中で記述してあげればいけましたよヾ(*・ω・)シ

2012-07-15

Can't connect to MySQL server on 'localhost' (10061)

Windows7マシンでRails環境を構築していたら嵌ったのでメモ コマンドプロンプトからは
mysql -uroot -p
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.25a MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
とちゃんと繋がってくれるのに、rakeコマンドで接続しようとすると
rake db:create
Can't connect to MySQL server on 'localhost' (10061)
Couldn't create database for ...
てな感じで怒られてしまい何がなんやら┐('~`;)┌
繋がらないって言ってるし、localhostが解決できていないのか!?
と思って、config/database.ymlのhost: localhostをhost: 127.0.0.1に変更してみると...
繋がった(・・;
でも、mysqlクラインとからは-h localhostとやっても繋がるという
とりあえずpingかけてみると
ping localhost
localhost [::1]に ping を送信しています 32 バイトのデータ:
::1 からの応答: 時間 <1ms
あれ、IP V6のループバックアドレスになってるっ!?
てことで、C:\Windows\System32\drivers\etc\hostsに
127.0.0.1       localhost
という記述を追加。再度pingしてみると
ping localhost
localhost [127.0.0.1]に ping を送信しています 32 バイトのデータ:
127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128
とIP V4のループバックアドレスが帰ってきてくれました。
この状態にしておけばhost: localhostでもrakeからMySQLに繋がりましたよヾ(*・∀・)ノ"

2012-06-28

Rails3のsend_data,send_fileでIE(Internet Explorer)だとファイルがダウンロードされない

# encoding: utf-8
class FileMakerController < ApplicationController
 def download
    send_data(params[:data], 
              :type => 'text/csv', 
              :filename => "#{params[:fname]}.csv")
 end
end
てなかんじで、POSTでデータとファイル名を送り込むと.csvっていう拡張子をくっつけてダウンロードできるようなコントローラーを書いてみました。
FirefoxやChromeでは意図通りダウンロードできたのですが、Internet Explorerだとリクエストは飛んでいるもののなんも反応がありません(´・ω・`)

:disposition => 'inline'を追加してデフォルトのattachmentから変更してあげると良いみたいです。
# encoding: utf-8
class FileMakerController < ApplicationController
 def download
    send_data(params[:data], 
              :type => 'text/csv', 
              :disposition => 'inline',
              :filename => "#{params[:fname]}.csv")
 end
end

Rails3でWARNING: Can't verify CSRF token authenticityと怒られた(´・ω・`)

くろすさいとりくえすとふぉーじゅりー(Cross site request forgeries)とかいう脆弱性対策のための機能なようです。 フォームを作成して別のコントローラーにPOSTしたらこんなのが出てました。
WARNING: Can't verify CSRF token authenticity
CSRF対策用のトークンが一致しませんぜってことみたいですね。
フォームに次のinputタグを追加してあげればOKでしたヾ(*・ω・)シ

2012-06-22

Rails3.2.6アプリケーションにCoolなデザインを適用してApache+Unicornで起動!

Railsアプリケーションに簡単にCoolなデザインを適用できるWeb App Themeなのですが、Rails3.2.6だとassetsに対応したバージョンが入ってくれず、苦労したのでメモしておきます。
まずは、アプリケーション作成
cd /var/www
rails new web-app-theme -d mysql
そして、説明通り
echo "gem 'web-app-theme', '~> 0.8.0'" >> Gemfile
bundle install
とやってみたところ
Bundler could not find compatible versions for gem "rails":
  In Gemfile:
    web-app-theme (~> 0.8.0) ruby depends on
      rails (~> 3.1.0.rc6) ruby

    rails (3.2.6)
な感じで怒られてしまい、Rails3.2.6は3.1.0.rc6より新しいと認識してくれないようです(ノ゚⊿゚)ノ
仕方なくGemfileから, '~> 0.8.0'の記述を削除してbundle installすると0.7.0が入ってくれました。
とりあえず、サンプルでscaffold実行
rails g scaffold task name:string memo:string  

>>/usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.4.0/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-1.4.0/lib/execjs.rb:5:in `'
        from /usr/local/lib/ruby/gems/1.9.1/gems/execjs-1.4.0/lib/execjs.rb:4:in `'
        from /usr/local/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `'
        from /usr/local/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `'
        from /usr/local/lib/ruby/gems/1.9.1/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/coffee-rails-3.2.2/lib/coffee-rails.rb:1:in `'
        from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/runtime.rb:66:in `block in require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `each'
        from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.4/lib/bundler/runtime.rb:55:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.1.4/lib/bundler.rb:119:in `require'
        from /var/www/web-app-theme/config/application.rb:7:in `'
        from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/commands.rb:24:in `require'
        from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.2.6/lib/rails/commands.rb:24:in `'
        from script/rails:6:in `require'
        from script/rails:6:in `
'
何か足りないようです(´・ω・`)
てな訳で足りないものをGemfileに追記してbundle install再実行
cat <<"EOF" >> Gemfile
gem 'execjs'
gem 'therubyracer'
EOF

bundle install
scaffoldリトライ!
rails g scaffold task name:string memo:string
今度はうまく行ってくれましたヾ(*・ω・)シ
あとは、静的ファイルの配信用としてApacheをインストールしておきます
yum -y install httpd
そして、バーチャルホストの設定ファイルをつくっておきます
cat <<"EOF" > /etc/httpd/conf.d/rails.conf

  ServerName www.exapmle.com
  DocumentRoot /var/www/web-app-theme/public
  CustomLog logs/access.log combined
  ErrorLog  logs/error.log

  ProxyRequests Off
  
    Order deny,allow
    Allow from all
  

  ProxyPass /images !
  ProxyPass /assets !
  ProxyPass /stylesheets !
  ProxyPass /javascripts !
  ProxyPass /robots.txt !
  ProxyPass /favicon.ico !

  ProxyPass / http://localhost:3000/
  ProxyPassReverse / http://localhost:3000/

EOF
あとは、Apacheを実行してApache側の設定はおしまい!
service httpd start
Rails側の処理をunicornでさせるためにインストールしておきます
Gefileに予め記述があるのでこれをコメントアウトしてbundle install
sed -i "s/# gem 'unicorn'/gem 'unicorn'/" Gemfile
bundle install
で、unicorn用にはproduction用の設定を作成しておきます
cat <<"EOF" > config/production.conf
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
# See also http://unicorn.bogomips.org/examples/unicorn.conf.rb for
rails_env = 'production'
worker_processes 5
working_directory '/var/www/web-app-theme'
port = 3000
listen port, :tcp_nopush => true
timeout 30
pid 'tmp/pids/unicorn.pid'
preload_app  true
stderr_path 'log/unicorn_err.log'
stdout_path 'log/unicorn.log'

before_fork do |server, worker|
  # この設定はpreload_app trueの場合に必須
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|
  # この設定はpreload_app trueの場合に必須
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection
end
EOF
あとは、DBの設定とassetsのprecompile
rake db:create RAILS_ENV=production
rake db:migrate RAILS_ENV=production
rake assets:precompile RAILS_ENV=production
あとはunicornにこの設定ファイルを読み込ませてデーモンモードで起動
unicorn_rails -D -c /var/www/web-app-theme/config/production.conf -E production
あとはブラウザでアクセスしてみれば起動してますねヾ(*・ω・)シ

お次は、ようやくWeb App Themeを使ってデザイン適用です
rails g web_app_theme:theme --app-name="web-app-theme" --theme=amro
そして、assetsのrecompileをしてunicornの再起動
rake assets:precompile RAILS_ENV=production
kill `cat /var/www/web-app-theme/tmp/pids/unicorn.pid`
unicorn_rails -D -c /var/www/web-app-theme/config/production.conf -E production
いざブラウザでアクセスしてみるとエラーが・・・
/var/www/web-app-theme/log/production.logにはこんなのがでてました
ActionView::Template::Error (web-app-theme/base.css isn't precompiled):
    2: 
    3: 
    4:   web-app-theme
    5:   <%= stylesheet_link_tag "web-app-theme/base", "web-app-theme/themes/amro/style", "web-app-theme/override", :cache => true %>
    6:   <%= javascript_include_tag :defaults, :cache => true %>
    7:   <%= csrf_meta_tag %>
    8: 
  app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__2208883353270545151_259086380'
  app/controllers/tasks_controller.rb:7:in `index'
これだとassetsに対応していないので書き換え
sed -i "s/<%= stylesheet_link_tag.*web-app-theme.*>/<%= stylesheet_link_tag \"application\" %>/" /var/www/web-app-theme/app/views/layouts/application.html.erb
sed -i "s/<%= javascript_include_tag.*defaults.*>/<%= javascript_include_tag \"application\" %>/" /var/www/web-app-theme/app/views/layouts/application.html.erb
cssの方も書き換え
cat <<"EOF" >> /var/www/web-app-theme/app/assets/stylesheets/application.css
//=web-app-theme/base
//=web-app-theme/themes/Amro/style.css
//=web-app-theme/override.css
EOF
そして、一式をassetsに移動
mv /var/www/web-app-theme/public/stylesheets/web-app-theme/ /var/www/web-app-theme/app/assets/stylesheets/
あとは、もう一度compileしてunicorn再起動
rake assets:precompile RAILS_ENV=production
kill `cat /var/www/web-app-theme/tmp/pids/unicorn.pid`
unicorn_rails -D -c /var/www/web-app-theme/config/production.conf -E production
これで、動きましたヾ(*・ω・)シ

2012-06-21

CentOS5でRails3.2.6がgemで入らない!

ruby -v
>> ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
gem -v
>> 1.8.24
な環境で試してみたところ
gem install rails --no-ri --no-rdoc
>> ERROR:  While executing gem ... (Gem::DependencyError)
    Unable to resolve dependencies: railties requires rake (>= 0.8.7), rack-ssl (~> 1.3.2), thor (< 2.0, >= 0.14.6), rdoc (~> 3.4); actionmailer requires mail (~> 2.4.4); activerecord requires arel (~> 3.0.2), tzinfo (~> 0.3.29); actionpack requires journey (~> 1.0.1), sprockets (~> 2.1.3), erubis (~> 2.7.0)
と怒られてしまいます。
そんなときはbundlerを使うと良いようです。
早速インストール
gem install bundler --no-ri --no-rdoc
railsをインストールするために設定ファイルを作成
cat <<"EOF" > Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.6'
EOF
そして、いざインストール実行!
bundle install
>> Fetching gem metadata from https://rubygems.org/.........
Installing rake (0.9.2.2)
Installing i18n (0.6.0)
Installing multi_json (1.3.6)
Installing activesupport (3.2.6)
Installing builder (3.0.0)
Installing activemodel (3.2.6)
Installing erubis (2.7.0)
Installing journey (1.0.4)
Installing rack (1.4.1)
Installing rack-cache (1.2)
Installing rack-test (0.6.1)
Installing hike (1.2.1)
Installing tilt (1.3.3)
Installing sprockets (2.1.3)
Installing actionpack (3.2.6)
Installing mime-types (1.19)
Installing polyglot (0.3.3)
Installing treetop (1.4.10)
Installing mail (2.4.4)
Installing actionmailer (3.2.6)
Installing arel (3.0.2)
Installing tzinfo (0.3.33)
Installing activerecord (3.2.6)
Installing activeresource (3.2.6)
Using bundler (1.1.4)
Installing json (1.7.3) with native extensions
Installing rack-ssl (1.3.2)
Installing rdoc (3.12)
Installing thor (0.15.3)
Installing railties (3.2.6)
Installing rails (3.2.6)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
そして、確認
rails -v
>> Rails 3.2.6
はい、入りましたヾ(*・ω・)シ しかし、いざrakeコマンド実行してみると
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
な感じで怒られてしまいました(´・ω・`)
execjsとtherubyracerをインストールしてあげれば良いみたいなので
cat <<"EOF" >> Gemfile
gem 'execjs'
gem 'therubyracer'
EOF
として、bundle updateしてあげればrakeもちゃんと動きました。

2012-05-04

Rails3のモデルでプライマリキーに任意のカラム名を使う

hogeというモデルのプライマリーキーは、デフォルトだとhoge_idとなってしまいますが
hoge_noにしたい場合はapp/models/hoge.rbを次のようにする
class Hoge < ActiveRecord::Base
  set_primary_key "hoge_no"
end

Rails3のモデルで任意のテーブル名を使う

hogeというモデルに対して、デフォルトではhogesというテーブルが割り当てられますが
piyoというテーブルを割り当てたい場合はapp/models/hoge.rbを次のようにする
class Hoge < ActiveRecode::Base
  set_table_name "piyo"
end

2012-05-02

Rails3.2のエラーメッセージを日本語にする

デフォルト状態だと
validate :name, :length => {:within => 0..3}
などとバリデーションを設定していると
Name is too long (maximum is 3 characters)
と表示されます。
これを、日本語表記に変更したい場合、作成したアプリケーションのconfig/application.rbの中で設定を行います。
# config.i18n.default_locale = :de
を以下に変更する
config.i18n.default_locale = :ja
そして、日本語表示用のデータである https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml をconfig/locales/ja.ymlとして保存します。 エラーメッセージが日本語に変わりましたヾ(*・∀・)ノ"
Nameは3文字以内で入力してください。
さらに、属性名であるNameも日本語名に変更したい場合は config/locales/ja.ymlの中で属性名の日本語名を定義してあげます
ja:
  attributes:
    name: "名前"
てな具合に。
そうすると
名前 は3文字以内で入力してください。
に変わりました(’’

2012-05-01

Windows7でRuby1.9.3+Rails3.2.6+MySQL5.5な環境構築

いろいろと新しいバージョンが出てきたので開発環境を入れなおしてみたのでメモがてら。

MySQLから
Windows (x86, 32-bit), MSI Installer:mysql-5.5.25a-win32.msi
をダウンロードしてインストール
※64bit版ではrails3標準のmysql2アダプタが対応していないので必ず32bit版!
と思ったけど、あとで入れるMySQL Connector/Cが32bit版なら本体は64bit版でも良いみたい(´・ω・`)

rubyinstaller.orgから
RubyInstallers:rubyinstaller-1.9.3-p194.exe
Development Kit:DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe
をダウンロード
rubyinstaller-1.9.3-p194.exeを実行してrubyをインストール
※「Add Ruby executables to your PATH」にチェックを忘れずに

DevKit-tdm-32-4.5.2-20111229-1559-sfx.exeを実行して適当なディレクトリへ解凍
cmd.exeなどで解凍したディレクトリへ移動
ruby dk.rb init
ruby dk.rb install
でインストール

RubyGemsから
rubygems-1.8.24.zip
をダウンロードして適当なディレクトリへ解凍
cmd.exeなどで解凍したディレクトリへ移動
ruby setup.rb
でインストール

gem install rails
で、Rails3.2.6をインストール

gem install mysql2
で、mysql2アダプタをインストール
You've installed the binary version of mysql2.
It was built using MySQL Connector/C version 6.0.2.
It's recommended to use the exact same version to avoid potential issues.

At the time of building this gem, the necessary DLL files where available
in the following download:

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

And put lib\libmysql.dll file in your Ruby bin directory, for example C:\Ruby\bin
とメッセージが出るので、素直に従う
このgem作った時は必要なDLLファイルは次のダウンロードにあったよ!
lib\libmysql.dllをC:\Ruby\binとかに入れてね!
ってことだけど、URLは無効なようなので
http://dev.mysql.com/downloads/connector/c/6.0.html
へ行って
mysql-connector-c-noinstall-6.0.2-win32.zip
をダウンロードしましょう
あとは展開して、Rubyをインストールしたディレクトリのbin配下へコピーすればOK

そして、早速アプリケーションの作成
rails new app1 -d mysql

config/database.yml
にmysqlのユーザーとパスワードをセット
あとは、関連モジュールのインストールとscaffoldで雛型の作成、DBの作成、サーバーの起動
bundle install
rails g scaffold task name:string memo:string
rake db:create
rake db:migrate
rails s

あとは
http://localhost:3000/tasks
にアクセスすればアプリケーションにアクセスできますよヾ(*・∀・)ノ"

2011-11-16

Windows7でMySQL 5.5.17 Ruby1.9.3 Rails3.1.1な環境構築

新しい情報はこっち

またRails案件を担当することになったので、開発環境を最近のものに更新しました。
そのインストールメモをば。
MySQLから
Windows (x86, 32-bit), MSI Installer:mysql-5.5.17-win32.msi
をダウンロードしてインストール
※64bit版ではrails3標準のmysql2アダプタが対応していないので必ず32bit版!
と思ったけど、あとで入れるMySQL Connector/Cが32bit版なら本体は64bit版でも良いみたい(´・ω・`)

rubyinstaller.orgから
RubyInstallers:rubyinstaller-1.9.3-p0.exe
Development Kit:DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe
をダウンロード
rubyinstaller-1.9.3-p0.exeを実行してrubyをインストール
※「PATHにbinディレクトリを追加」にチェックを忘れずに

DevKit-tdm-32-4.5.2-20110712-1620-sfx.exeを実行して適当なディレクトリへ解凍
cmd.exeなどで解凍したディレクトリへ移動
ruby dk.rb init
ruby dk.rb install
でインストール

RubyGemsから
rubygems-1.8.11.zip
をダウンロードして適当なディレクトリへ解凍
cmd.exeなどで解凍したディレクトリへ移動
ruby setup.rb
でインストール

gem install rails --no-ri --no-rdoc -v 3.1.1
で、Rails3.1.1をインストール

gem install mysql2 --no-ri --no-rdoc -v 0.3.9
で、mysql2アダプタをインストール
※0.3.10以降だとエラーになるので0.3.9を使う
MySQL用のDLLをインストール 開発版MySQLライブラリのページへ行き No thanks, just take me to the downloads! をクリックしてmirrorを選択してmysql-connector-c-noinstall-6.0.2-win32.zipをダウンロード zipの中身のmysql-connector-c-noinstall-6.0.2-win32\lib\libmysql.dllをc:\ruby\binへコピーする
そして、早速アプリケーションの作成
rails new app1 -d mysql
作成したディレクトリの中のGemfileを編集する
gem 'mysql2', '~> 0.x.x'
を削除して、次を追加
gem 'mysql2', '0.3.9'

config/database.yml
にmysqlのユーザーとパスワードをセット
※ユーザー名:root パスワード空欄の状態でrakeを実行するとルートのパスワードが変更されてmysqlに接続できなくなったので注意!!

あとは、関連モジュールのインストールとscaffoldで雛型の作成、DBの作成、サーバーの起動
bundle install
rails g scaffold task name:string memo:string
rake db:create
rake db:migrate
rails s

あとは
http://localhost:3000/tasks
にアクセスすればアプリケーションにアクセスできますよヾ(*・∀・)ノ"

2011-07-13

Object#tapってなんやねん!

DEPRECATION WARNING: Object#returning has been deprecated in favor of Object#tap.

なんて警告が出たので調べてみるとAWS::S3の中で警告がでるような処理をしているようですね。
Gemfilesのaws-s3の部分を以下のように書き換えてbundle updateしてあげれば警告でなくなりましたよヾ(*・∀・)ノ"

gem 'aws-s3', :git => 'git://github.com/emk/aws-s3.git', :require => 'aws/s3'
gem 'xml-simple'

2011-06-16

Rails3.0.8で作成したアプリがIE9だとdestroyの挙動がおかしい

scaffoldを使うとさくっと登録・表示・編集・削除ができる下地を作ってくれる訳ですが
IE9だとどうも削除の動作がおかしい・・・

一覧画面から削除を行おうとすると
・確認画面は出るのだけど削除されずに表示画面へ遷移してしまったり
・削除はされるけど表示画面へ遷移して、存在しないよって怒られたり
・削除されるけど画面が更新されなくてリロードしなくてはいけなかったり

色々調べているとどうもjsがおかしいみたい。
readAttributeがうまいこと機能してないようです。
てな訳で以下2つのjsを最新のものに置き換えてみました

rails.js(rails3.0.8付属) -> February 13, 2011 [入手先]
prototpye.js(rails3.0.8付属 1.7_rc2) -> 1.7 (November 16, 2010) [入手先]

これでIE9でも良い具合に動いてくれましたよヾ(*・∀・)ノ"

2011-06-14

bundle install で fatal: I don't handle protocol ''git' になってしまう

bundler 1.0.14にはWindowsに於けるエスケープ処理にバグがあるとのこと。
1.0.13を使うことで回避できましたヾ(*・∀・)ノ"
gem uninstall bundler -v 1.0.14
gem install bundler -v 1.0.13
bundle install

2011-06-09

EC2のt1.microインスタンスでubuntu10.0.4,Ruby1.9.2,Rails3,MySQLな環境を構築

ググるとrvm(Ruby Version Manager)を使った方法が多くひっかかりますが、
マイクロインスタンスだとcpu stealが発生しまくって一向にインストールが進みません(´・ω・‘)
てな訳でもっと軽快にインストールする方法は無いかと調べたところこんな感じで行けそうです。

古いrubyを削除
apt-get remove ruby1.8

apt-getでruby1.9.2,rubygems for Ruby1.9.2をインストール
add-apt-repository ppa:ubuntu-on-rails/ppa 
apt-get update
apt-get -y install ruby1.9.2 ruby1.9.2-dev rubygems1.9.2 libopenssl-ruby1.9.2

gemでrails3をインストール
gem sources -a http://gems.rubyforge.org/ 
gem install rails --no-ri --no-rdoc

MySQLサーバーとクライアントのライブラリをインストール
apt-get install mysql-server libmysqlclient-dev

gem用の環境変数を設定
echo 'export GEM_HOME=/var/lib/gems/1.9.2' >> /etc/bash.bashrc
echo 'export GEM_PATH=${GEM_HOME}' >> /etc/bash.bashrc
echo 'export PATH=${GEM_HOME}/bin:${PATH}' >> /etc/bash.bashrc
source /etc/bash.bashrc

サンプルアプリの作成と関連モジュールのインストール、サーバーの起動
rails new app1 -d mysql
cd app1
bundle install
rails g scaffold task name:string memo:string
rake db:create
rake db:migrate
rails s

http://サーバのホスト名:3000/tasks
にアクセスしてみてアプリが動いていたらおーけーヾ(*・∀・)ノ"

Rails3でCoolなデザインを簡単に適用する

web-app-themeというプラグインがあるのでこれを使います。

ググってると古い情報なんかが入り混じっていて
script/generate theme
とやりましょうなんて書いているけれど最近のだとこれだとダメみたいです。
それっぽく
rails g theme
Could not find generator theme.
とやってみるもののエラーになってしまいます。

こんな感じでアプリ名とテーマを指定してあげればうまくいきましたよヾ(*・∀・)ノ"
rails g web_app_theme:theme --app-name="アプリ名" --theme=Amro

テーマのサンプルはこちらにあります。

2011-06-08

Windows7でRuby1.9.2+Rails3+MySQL5.5な環境を構築

※最近インストールした情報をまとめたこちらもどうぞ!

MySQLから
Windows (x86, 32-bit), MSI Installer:mysql-5.5.13-win32.msi
をダウンロードしてインストール
※64bit版ではrails3標準のmysql2アダプタが対応していないので必ず32bit版!
と思ったけど、あとで入れるMySQL Connector/Cが32bit版なら本体は64bit版でも良いみたい(´・ω・`)

rubyinstaller.orgから
RubyInstallers:rubyinstaller-1.9.2-p180.exe
Development Kit:DevKit-tdm-32-4.5.1-20101214-1400-sfx.exe
をダウンロード
rubyinstaller-1.9.2-p180.exeを実行してrubyをインストール
※「Add Ruby executables to your PATH(PATHにbinディレクトリを追加)」にチェックを忘れずに

DevKit-tdm-32-4.5.1-20101214-1400-sfx.exeを実行して適当なディレクトリへ解凍
cmd.exeなどで解凍したディレクトリへ移動
ruby dk.rb init
ruby dk.rb install
でインストール

RubyGemsから
rubygems-1.8.5.zip
をダウンロードして適当なディレクトリへ解凍
cmd.exeなどで解凍したディレクトリへ移動
ruby setup.rb
でインストール

gem install rails
で、Rails3.0.8をインストール

gem install mysql2 -v 0.2.6
で、mysql2アダプタをインストール
※0.2.7以降だとエラーになるので0.2.6を使う
You've installed the binary version of mysql2.
It was built using MySQL Connector/C version 6.0.2.
It's recommended to use the exact same version to avoid potential issues.

At the time of building this gem, the necessary DLL files where available
in the following download:

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

And put lib\libmysql.dll file in your Ruby bin directory, for example C:\Ruby\bin
とメッセージが出るので、素直に従う
このgem作った時は必要なDLLファイルは次のダウンロードにあったよ!
lib\libmysql.dllをC:\Ruby\binとかに入れてね!
ってことだけど、URLは無効なようなので
http://dev.mysql.com/downloads/connector/c/6.0.html
へ行って
mysql-connector-c-noinstall-6.0.2-win32.zip
をダウンロードしましょう
あとは展開して、Rubyをインストールしたディレクトリのbin配下へコピーすればOK

そして、早速アプリケーションの作成
rails new app1 -d mysql
作成したディレクトリの中のGemfileを編集する
gem 'mysql2', '~> 0.2.6'
を削除して、次を追加
gem 'mysql2', '0.2.6'
gem 'rake' , ' 0.8.7'

config/database.yml
にmysqlのユーザーとパスワードをセット
※ユーザー名:root パスワード空欄の状態でrakeを実行するとルートのパスワードが変更されてmysqlに接続できなくなったので注意!!

あとは、関連モジュールのインストールとscaffoldで雛型の作成、DBの作成、サーバーの起動
bundle install
rails g scaffold task name:string memo:string
rake db:create
rake db:migrate
rails s

あとは
http://localhost:3000/tasks
にアクセスすればアプリケーションにアクセスできますよヾ(*・∀・)ノ"



チラシの裏:試行錯誤してる途中で出会ったエラーあれこれ(´・ω・‘)
Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- active_record/connection_adapters/mysql2_adapter)

collect2: ld returned 1 exit status
make: *** [mysql2.so] Error 1

uninitialized constant Rake::DSL