Server-Side/Rails2011. 3. 6. 20:23
rake를 실행했을 때 아래와 같은 에러가 발생하는 경우의 해결법이다.
`bin_path’: can’t find executable rake for rake-0.8.7 (Gem::Exception)

c:\Ruby\lib\ruby\gems\1.9.1\specifications\rake.gemspec 파일을 삭제한다.

Posted by 준피
Server-Side/Rails2011. 3. 2. 22:50
윈도우즈 운영체제에서 Rails 프로젝트를 생성한 직후에 돌려보면 sqlite3.dll이 없어서 수행할 수 없다는 에러가 나온다.
이러한 이유는 기본 데이터베이스가 sqlite이기 때문이다. 


1. 기본 데이터베이스를 mysql로 하기
# rails <app name> --database=mysql

2. sqlite3 설치하기
sqlite 사이트에서 sqlite-shell-win32-x86-3070500.zip, sqlite-dll-win32-x86-3070500.zip 두개를 다운받아서 압축을 푼다.
그러면 sqlite3.def, sqlite3.dll, sqlite3.exe가 나온다. 이 파일들을 Ruby디렉토리 안의 bin에 옮긴다.
해당 Rails 프로젝트에서 gem install sqlite3-ruby 를 실행한다.


참고 사이트
Posted by 준피
Server-Side/Linux2011. 1. 11. 10:41
Install Ruby & Package
# sudo apt-get install ruby rake rubygems
# sudo apt-get install libmysql-ruby
# sudo apt-get install libopenssl-ruby1.8

# sudo apt-get install build-essential
# sudo apt-get install apache2-prefork-dev
# sudo apt-get install libapr1-dev
# sudo apt-get install libaprutil-dev

Install Rails
# gem install rails -v=2.3.5

Install Redmin
# wget http://rubyforge.org/frs/download.php/71723/redmine-1.0.0.tar.gz
# tar xzfv redmine-1.0.0.tar.gz -C /var/www
# cd /var/www
# ln -s ./redmine-1.0.0 redmine

Create Database
# mysql -u root -p
mysql> create database redmine character set utf8;
mysql> create user 'redmine'@'localhost' identified by 'password';
mysql> grant all privileges on redmine.* to 'redmine'@'localhost';
mysql> flush privileges;

Configuration Database
# cd /var/www/redmine/config
# cp database.yml.example database.yml
# vi database.yml
----------------------------------
production:
    adapter: mysql
    database: redmine
    host: localhost
    username: redmine
    password: redmine
----------------------------------

Start Redmine
# cd /var/www/redmine
# rake generate_session_store
# RAILS_ENV=production rake db:migrate
# RAILS_ENV=production rake redmine:load_default_data
# mkdir -p tmp public/plugin_assets     <= 보통 디렉토리가 있다.
# adduser redmine
# passwd redmine
# sudo chown -R redmine:redmine files log tmp public/plugin_assets
# sudo chmod -R 755 files log tmp public/plugin_assets
# ruby script/server webrick -e production

3000번 포트로는 redmine 접속이 가능하지만, Passenger를 이용해서 아파치(80)포트와 연동하자.

Install & Configure Passenger
# sudo apt-get install libapache2-mod-passenger libapache2-mod-fastcgi

# vi /etc/apache2/mods-available/passenger.conf
-----------------------------------------------------------
<IfModule mod_passenger.c>
    PassengerRoot    /usr
    PassengerRuby   /usr/bin/ruby
   PassengerDefaultUser    redmine     <= 추가
</IfModule>
-----------------------------------------------------------

# vi /etc/apache2/sites-enabled/000-default
-----------------------------------------------------------
DocumentRoot /var/www     <= 확인

# 추가 #
<Directory /var/www/redmine>
    RailsBaseURI /redmine/public
    PassengerResolveSymlinksInDocumentRoot on
    Options Indexes ExecCGI FollowSymLinks
    Order allow,deny
    Allow from all
    AllowOverride all
</Directory>
-----------------------------------------------------------

# vi /var/www/redmine/public/.htaccess
-----------------------------------------------------------
# 확인 #
RewriteEngine On
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
-----------------------------------------------------------

# cd /var/www/redmine/public
# cp ./dispatch.fcgi.example ./dispatch.fcgi

# a2enmod passenger
# a2enmod fastcgi
# apache2ctl restart

http://your.ip.address:3000 
http://your.ip.address/redmine/public 

위의 주소로 접속이 가능하다.

Apply VirtualHost
# vi /etc/apache2/sites-enabled/000-default
------------------------주석처리한다.--------------------------------
#<Directory /var/www/redmine>
#    RailsBaseURI /redmine/public
#    PassengerResolveSymlinksInDocumentRoot on
#    Options Indexes ExecCGI FollowSymLinks
#    Order allow,deny
#    Allow from all
#    AllowOverride all
#</Directory>
-------------------------------------------------------------------

# vi /etc/apache2/sites-available/redmine.your_domain.com
-------------------------------------------------------------------
<VirtualHost *:80>
        ServerName      redmine.your_domain.com
        ServerAlias       redmine
        DocumentRoot    /var/www/redmine/public

        RailsBaseURI    /
        RailsEnv        production
        PassengerMaxPoolSize    4

        <Directory /var/www/redmine/public>
                Options FollowSymLinks
                AllowOverride   None
                Order   allow,deny
                Allow   from all
        </Directory>

        LogLevel        info
        ErrorLog        /var/log/apache2/redmine-error.log
        CustomLog       /var/log/apache2/redmine-access.log combined
</VirtualHost>
-------------------------------------------------------------------
# sudo a2ensite redmine.your_domain.com
# /etc/init.d/apache2 reload

http://your.ip.address:3000 
http://redmine.your_domain.com/

Reference

Application error

Rails application failed to start properly
/var/www/redmine/public/.htaccess file을 삭제한다.
# cd /var/www/redmine/public
# mv .htaccess .htaccess.orig



Posted by 준피
Server-Side/Rails2010. 11. 14. 17:10

우분투와 윈도우두개의 OS에서 rails app개발을 하고있는데 유독 윈도우에서 만약 mysql db table안에 한글문자가 포함되있을경우 [incompatible character encodings: UTF-8 and ASCII-8BIT] 와 같은 에러가 났다. 개발할때의 환경은 Windows 7 & Ruby 1.9.2 & Rails 3.0.0 & Mysql 5 이였다. rails 3 로 프로젝트를 c:>rails new project -d mysql 과 같이 생성하면, config/database.yml 속에 adapter 가 mysql2 로 설정되어있다. 뭐 다 좋은데, window에서 이런설정으로 있으면 db의 table안에 한글이 들어있을경우 십중팔구 페이지를 로딩할때 encoding error가 뜬다는 것이다. 한글과 같은 루비 파일 상단에 # encoding: UTF-8 를 넣었음에도 불구하고 말이다. ( mysql2 gem 의 문제인것 같았다. ) 임시방편 해결방안이 있는데  @article.title 이란곳에서 문제가 난다면 @article.title.force_encoding("UTF-8") 형식으로 데이타베이스에서 한글을 불러올때 나는 에러사항을 해결할 수 있다. 하지만 수많은 데이타를 불러오는부분에서 일일이 다 저렇게 할수는 없는방편이고, 이래저래 구글링을하다가 올바른 해결방법을 찾아냈다.

먼저 config/database.yml 파일속에 adapter: mysql2 => adapter: mysql 으로 바꿔버린다.
Gemfile 을 열어서  gem 'mysql2' => gem 'ruby-mysql' 바꾸어 준다.
명령어 bundle install 을 하면 ruby-mysql 이 설치될 것이다. 아니면 gem install ruby-mysql 해도 된다.
서버를 재시작해서 실행해본다. 만약 mysql db에 한글이 포함되있음에도/여러페이지 로딩시 인코딩에러가 안난다면 성공!
만약 [uninitialized constant Mysql::Protocol::UNIXSocket ] 에러가 난다면 config/database.yml 파일을 열어서 host: localhost =>host: 127.0.0.1 로 바꾸어 주어야 한다.

이제 윈도우와 우분투에서 걱정없이 rails를 개발할 수 있게됬다.

Posted by 준피