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
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를 쓸 수 있다.
'프로그래밍 > Ruby' 카테고리의 다른 글
루비로 작성된 다양한 라이브러리 찾고 배워보기 (2) | 2021.12.12 |
---|---|
[남이 만든 프로젝트 무작정 따라하기] 2021-12-07 (0) | 2021.12.07 |
[남이 만든거 무작정 따라하기 프로젝트] git bash commands (0) | 2021.12.04 |
[남이 한거 무작정 따라하기 프로젝트] 2021 - 12 - 04 (0) | 2021.12.04 |
[RubyCraft] - 처음 환경 세팅(RbSFML) (0) | 2021.05.07 |