Apache용으로 실행 가능한 mod_ruby가 아직 없는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/75001

  •  09-06-2019
  •  | 
  •  

문제

Ruby와 Rails의 인기만큼 이 문제는 이미 해결된 것 같습니다.JRuby와 mod_rails는 모두 훌륭하고 멋지지만, 그냥 Ruby용 Apache 모드는 왜 없는 걸까요?

도움이 되었습니까?

해결책

기본적인 문제는 이렇습니다.오랫동안 MRI는 실행 가능한 유일한 Ruby 구현이었습니다.MRI에는 다른 응용 프로그램에 내장하기 어렵게 만드는 여러 가지 문제가 있습니다(기본적으로 mod_ruby 하다:이는 Apache에 MRI를 내장합니다), 특히 다중 스레드(Apache는)에 내장되어 있습니다.특히 스레드로부터 안전하지 않으며 상당한 전역 상태를 갖습니다.

이 전역 상태는 예를 들어 하나의 Rails 애플리케이션이 일부 클래스를 수정하면 다음을 의미합니다. 그 외 모든 것들 동일한 Apache 서버에서 실행되는 Rails 애플리케이션은 또한 이 수정된 클래스를 참조하세요.

또 다른 문제는 MRI 소스코드가 쉽게 해킹되지 않는다는 점이다.MRI는 이제 15년이 넘었고 그 모습이 보이기 시작했습니다.

이러한 문제로 인해 mod_ruby는 결코 정말 제대로 작동했고 어느 시점에서 관리자는 단순히 포기했습니다.

반면 C 기반 PHP 인터프리터는 처음부터 Apache 내부에서 mod_php로 실행되도록 설계되었습니다.실제로 처음 두 버전의 경우 인터프리터의 명령줄 버전조차 없었고 mod_php가 오직 PHP를 실행하는 방법.

Phusion Passenger(mod_rack, mod_rails라고도 함) 기본적으로 문제를 포기하고 회피하여 이 문제를 해결합니다.그들은 단순히 모든 애플리케이션에 대해 별도의 프로세스로 별도의 MRI 사본을 실행합니다.이는 Ruby에서만 훌륭하게 작동하는 것이 아닙니다.지원합니다 WSGI (Python 웹 프레임워크용 표준 인터페이스), 고문 (Ruby 웹 프레임워크의 표준 인터페이스) 및 Ruby on Rails를 직접 지원합니다.

내 희망은 켜져 있어요 mod_rubinius, 불행히도 아직 존재하지 않습니다. 루비니우스 처음부터 스레드로부터 안전하고, 내장 가능하며, 전역 상태가 없고, C 스택 등을 사용하지 않도록 설계되었습니다.하나의 Rubinius 프로세스 내에서 여러 Rubinius VM을 실행할 수 있도록 설계되었습니다.이로 인해 mod_rubinius는 mod_ruby보다 구현 및 유지 관리가 훨씬 더 쉬워졌습니다.불행하게도, 물론 Rubinius는 아직 출시되지 않았으며, mod_rubinius에 대한 실제 작업은 Rubinius가 출시될 때까지 시작조차 할 수 없습니다.좋은 소식은 mod_rubinius가 이미 mod_ruby보다 더 많은 인력을 보유하고 있다는 것입니다. 왜냐하면 Mod_rubinius는 Rails 호스팅 회사에서 작업하는 개발자에게 비용을 지불했기 때문입니다. 필사적으로 스스로 사용하고 싶어합니다.

다른 팁

있다 퓨전 승객, 실행할 수 있는 강력한 Apache 모듈 고문 최소 구성의 애플리케이션.이는 공유 호스트에게 매력적으로 다가오고 있으며 모든 프로그램을 Rack 응용 프로그램으로 전환하는 것은 엄청나게 쉽습니다.

Rack 애플리케이션은 Ruby입니다. 물체(클래스가 아님)에 응답합니다. call.정확히 걸립니다 하나의 인수, 환경과 정확히 배열을 반환합니다 세 가지 가치:상태, 헤더 및 몸.

mod_rails가 실제로 Rails 코드에만 국한되지 않는다는 misslav의 요점을 두 번 분명히 하는 것이 가치가 있을 것입니다.새로운 이름인 mod_rack이 훨씬 더 좋습니다.아주 작은 앱도 랙에 설치할 수 있습니다. 그 예는 다음과 같습니다.

class HelloWorld
  def call(env)
    [200, {"Content-Type" => "text/plain"}, ["Hello world!"]]
  end
end

하나가 있습니다: mod_ruby, 그러나 약 2년 동안 유지되지 않았습니다.

있다 mod_rails 그리고 그것은 달릴 수 있다 고문 응용 프로그램, 무엇이 더 필요합니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top