본문 바로가기
프로그래밍/Ruby

[Ruby on Rails] passenger-irb 없을 때 잠깐 쓸 수 있는 녀석

by 리나그(ReenAG) 2021. 7. 31.
728x90
반응형

What is the substitute of passenger-irb?

 

지금 내가 Docker를 이용해서 루비 온 레일즈 튜토리얼을 돌리고 있는데, 시작하자마자 문제에 봉착할 줄은 몰랐다. 원인은 내가 apache2서버와 passenger를 이용해서 RoR환경을 구성했다는 것이다. 일반적으로, 튜토리얼에서

bin/rails server

를 이용해 rails자체 서버를 돌리는 것은 알고 있을 것이다. 하지만, 나의 경우는 달랐다. passenger가 rails를 가지고 있었으므로, bin/rails를 이용해서 할 수 있는 것은 mvc의 생성/소멸 같은 rails 프로세스에 직접적으로 영향이 없는 작업들 뿐이었다. 문제는 여기서 발생했다.

bin/rails console

위의 커맨드을 이용해서 irb 환경을 이용하는 것이 튜토리얼의 일부인데, 처음에는 정상적으로 잘 되는 것처럼 보이다가도 제대로 되지 않는다.

irb> article = Article.new(title: "Hello Rails", body: "I am on Rails!")

이걸 실행하니까 Article이 뭐냐는 답변이 돌아왔다. 이유인 즉슨 자체 레일즈 서버는 현재 아무것도 하고 있지 않은, passenger와 apache2와는 별개의 rails에 생성 명령을 내리고 있었기 때문이다.

passenger-irb

 

그래서 찾아보니까, passenger와 연동된 rails에 명령을 내리는 방법에는 이게 있었다. 다행이다 싶었지만, 곧 바로 뒤통수를 맞았다. passenger-enterprise라는, 유료 passenger를 이용해야만 이 명령어를 쓸 수 있다는 것을 알았기 때문이다.

 

그래서! 그 대신 irb환경을 제공해 줄 수 있는 gem인 web-console / rvt에 대해서 소개하려고 한다.

https://github.com/rails/web-console

 

GitHub - rails/web-console: Rails Console on the Browser.

Rails Console on the Browser. Contribute to rails/web-console development by creating an account on GitHub.

github.com

shell에서 irb를 쓰는 방법은 찾지 못했지만... 이렇게 하면 여러분이 호스팅한 사이트에서 console을 열어 작업할 수 있게 해준다. (적어도 튜토리얼을 진행할 수 있게 된다.)

 

1. Gemfile에 이걸 더한 다음 bundler install을 하자.

#정확한 방법은 이게 아니다. 위 링크에서 readme.md의 방법을 참고하시길.
gem 'web-console'
gem 'rvt'

 

2. 콘솔을 띄우기를 바라는 페이지에 (보통은 [what].html.erb) 이걸 더하자.

<% console %>

 

3. 그 View를 관장하는 Controller를 좀 편집 해주자 :

class PostsController < ApplicationController
  def new
    console
    @post = Post.new
  end
end

 

4. passenger를 재시작하고 웹페이지에 접속해보면 아무것도 안뜬다.

정상이다. 여러분의 ip를 콘솔에서 기본적으로 차단하기 때문이다.

 

5. log에서 여러분의 ip를 찾아낸뒤 applications.rb에 더한다.

class Application < Rails::Application
  config.web_console.permissions = '[your ip]'
end

이젠 console을 이용해서 irb를 쓸 수 있다.

728x90
반응형