2010-11-19 9 views
1

Ruby on Web에서 프로그래밍을 시작하려고합니다. 우분투 10.04를 사용합니다. 내 IDE는 NetBeans입니다. 루비 레일을 실행하는 데 필요한 모든 패키지를 설치했습니다. PHP 용 아파치를 사용하기 때문에 Phusion Passenger를 설치하는 아파치를 계속 사용하기로 결정했습니다. 나는 또한 포트 3000을위한 가상 호스트를 구성했다 (port.conf도 변경했다).
나는 모든 것을 다 잘 구성한다고 생각하지만, NetBeans (나는 PHP 파일을위한 var/www, 같은 폴더에 저장 됨)에 새로운 프로젝트를 만들고 firefox로 프로젝트를 엽니 다. 공용 폴더에 test.rb라는 새 파일을 만듭니다. 나는이 test.rb를 실행하지만 파이어 폭스는 파일을 다운로드하고 실행하도록 요청한다.Ruby On Rails on Ubuntu + apache2 + Passenger

루비라고 생각합니다. 레일이 완전히 구성되어 있습니다. 그리고 내 apache2 설정에는 문제가 없다고 생각합니다. 그럼 루비 프로젝트를 어떻게 돌릴 수 있습니까? .erb, .rhtml을 실행할 수 있지만 코드를 실행하면 코드가 표시됩니다.

감사합니다. (영어로 죄송합니다)

+0

mod_ruby를 사용해 보셨습니까? – auralbee

+0

예, libapache2-mod-ruby를 설치했습니다. – StiveKnx

답변

4

당신이 Rails 응용 프로그램의 공용 폴더에 있다면 루비 스크립트를 실행할 수 없습니다 (응용 프로그램의 다른 곳에서 명시 적으로 참조하지 않고 그 스크립트를 실행해야합니다. 아마 보안 구멍), 실제 파일을 때리는 PHP는 결과를 렌더링하지 않습니다.

요청이 Rails 앱에 도착하면 Rails 앱에서 루비 코드를 실행하려면 라우터를 통해 리디렉션됩니다 (config/routes.rb 참조). 먼저 컨트롤러에 라우트해야합니다.

당신은 명령을

이는 상용구 코드를 모두 작성 (과에 경로를 추가합니다

rails generate scaffold/resource test 

(scaffold 또는 resource이 필요한 옵션 중 하나)을 실행하여이 작업을 수행 할 수있는 당신의 routes 파일)을 사용하여 요청을 처리해야합니다.

정적 자산 (html, 이미지 등) 만 공용 폴더를 통해 제공됩니다. 이것이 모든 CSS와 JS가 공개 측에 저장되는 이유입니다.

서버 요청에 응답하는 순수한 루비 응용 프로그램을 작성하려면 Rails 응용 프로그램이 아닌 자체 응용 프로그램 구조로 작성해야합니다.

0

스카니가 맞다. 추가 지점을 추가하겠습니다.

/var/www는 apache가 레일이 아닌 콘텐츠를 제공하는 데 사용하는 디렉토리입니다. 이 디렉토리를 사용하여 웹 서버의 비 레일 컨텐츠를 제공하고 레일 프레임 워크를 사용하여 레일 컨텐츠를 제공 할 수 있습니다. 레일 프로젝트를 설정하려면 rails generate 명령 (rails3)을 scaney 쇼로 실행하거나 (그 밖의 많은 튜토리얼 중 하나를 따르십시오).

0

저는 레일즈 개발을 위해 우분투를 사용합니다. 개발을 위해 개발 서버를 사용하는 것이 가장 좋습니다. 호스트의 프로덕션 환경에서 Passenger를 사용합니다.

아파치를 사용하면 Rails 프로그램을 피할 수있을 때 킥 스타트 (kick-start)를하면 "관심사 분리"의 목적을 실제로 무효화 할 수 있습니다.

또한 레일즈 애플리케이션을 디버깅하려면 개발 서버의 자세한 출력이 필요합니다.

0

Ruby는 PHP 스크립트를 실행하는 것과 같은 방식으로 실행되지 않습니다. Ruby 및 Rails에서는 코드를 실행하는 응용 프로그램 서버를 실행해야합니다. Rails의 경우 프로젝트 루트 디렉토리에있을 때 rails server (Rails 3의 경우, 레일 2의 경우 ./script/server)을 실행하는 것만 큼 간단합니다. 그러면 포트 3000에서 실행되는 서버가 시작되므로 http://localhost:3000/으로 이동하여 앱을 볼 수 있습니다.