본문 바로가기
General CS/Azure

[군대식 클라우드 코딩] 2. Rails 7.0.4로 업그레이드 시도

by 리나그(ReenAG) 2022. 11. 12.
728x90
반응형

받아라 구데기 썸네일 2

다음 글

 

[군대식 클라우드 코딩 TroubleShooting] - 23 01 09

1. 일단 오래간만에 다시 컴백해서 살펴보고 있는데 Azure에 올리는 기능하고 Test Develeopment 환경도 문제 없어 보임 근데 Rspec이 동작을 안함. describe "canary test" do it "true to be true" do expect(true).to be tru

passingprogram.tistory.com

이전 글

 

[군대식 클라우드 코딩] 1. Azure에 원격으로 Ruby On Rails 넣어보기

군대에 있으면 개인 PC는 개뿔 그냥 인터넷만 가능한 뚱딴지 같은 상황이 나온다. 여기서 코딩을 하기위해서는 클라우드를 바라볼 수 밖에 없게 되어있는데, 오히려 이런 압박이 경험이 되는것

passingprogram.tistory.com

 

곁다리로 일단 rspec, sassc-rails를 깔기로 했다. TDD환경이 중요하기도하고, sassc-rails는 나중에 css와 관련된 문제에 도움이 될거라고 생각... 해서 일단 권장되는대로! 깔기로 했다.

 

[replit.nix]

rspec을 여기서도 깔아줘야한다.

{ pkgs }: 
let
  pkgs = import (builtins.fetchTarball {
    url = "https://github.com/NixOS/nixpkgs/archive/860b56be91fb874d48e23a950815969a7b832fbc.tar.gz";
  }) {};
in {
  deps = [
    pkgs.nodejs-16_x
    pkgs.sqlite
    pkgs.ruby
    pkgs.libffi
    pkgs.rubyPackages.rspec
    pkgs.rubyPackages.ffi
    pkgs.rubyPackages.ffi-compiler
    pkgs.glibc
  ];
}

[gemfile]

sassc-rails와 rspec-rails를 깔아준다.

gem 'sassc-rails'

...

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails', '~> 3.4', '>= 3.4.2'
end

만약 sassc-rails에서 sassc를 깔지 못했다는 이야기가 나오면 2.1.0버전을 lock에서 강제로 지정하면 bundle install이 성공적으로 끝날 것이다. replit 환경에서 rails를 쓰려면 무조건 bundle exec를 서야한다. 하여간데, 이후 이 커맨드를 넣으면 자동으로 spec이 만들어 진다.

bundle exec rails generate rspec:install

이후 모든 spec.rb에는 

require 'rails_helper'

를 넣어두면 된다.

 

rails 버전을 올릴때 rails만 올라가는게 아니라 다른 다양한 gem들도 죄다 업그레이드 해줘야한다. bundle update로 그냥 업뎃이 되지 않았기 때문에, 난 그냥 lock를 수정했다... ㅠ

https://rubygems.org/gems/rails/versions/7.0.4

 

rails | RubyGems.org | your community gem host

 

rubygems.org

그렇다고는 해도 rubygems.org가 워낙 잘 되어있기 때문에 보고서 나머지 의존성 패키지를 설치하기만 하면 된다. 의외로 replit상에서는 업데이트 후에도 잘 돌아갔다. (이게 되네)

 

단, 한가지 문제가 있었는데, 인가된 host를 config/environments/devleopment.rb , production.rb에 넣어주어야 했다.

https://stackoverflow.com/questions/53878453/upgraded-rails-to-6-getting-blocked-host-error

 

Upgraded Rails to 6, getting Blocked host Error

I needed the new function in ActiveStorage to resize_to_fill so I upgraded to Ruby 2.5.1 and Rails 6. ruby '2.5.1' gem "rails", github: "rails/rails" When I stopped, then rest...

stackoverflow.com

다행히 한 줄만 추가해줘도 멀쩡하게 돌아간다...

하지만 문제가 생긴것이, push를 한 후 Azure에서 더이상 사이트가 보이지를 않았다. 500 error가 계속 뜨고 있었다.

 

일단 문제해결을 위해서 난 최대한 정보를 수집해야했는데, 이것도 나름 난관이었다. 처음에는 ssh를 제공해주는 사실 자체를 몰랐기 때문에 로그라도 보려고 했는데, puma에서는 자체적으로 로그를 production에서는 내주지 않는다. 그래서 production에 있는 로그 수준을 debug로 내리고, 환경 변수를 하나 설정해줘서 자동적으로 로그를 내주도록 했다. 결론은 

자체적으로 제공되는 application.css를 렌더링 할 수가 없어서 생긴 문제였다.

대충 에러부분만 따오면 이렇다.

ActionView::Template::Error (The asset "application.css" is not present in the asset pipeline.
6:     <%= csrf_meta_tags %>
7:     <%= csp_meta_tag %>
8:
9:     <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
10:   </head>
11:
12:   <body>

app/views/layouts/application.html.erb:9

 

<Azure에서 7.0.4 rails 업데이트가 되고 난 후 제대로 css를 불러오지 못할 때 대처법>

https://stackoverflow.com/questions/56614166/rails-application-css-not-in-asset-pipeline

 

Rails: application.css not in asset pipeline

I know this is a old question but no answer is fixing my problem. I'm new to Ruby on Rails and just created project with a PostgreSQL database just to be able to upload the project to Heroku. When i

stackoverflow.com

https://stackoverflow.com/questions/7464544/ruby-on-rails-rake-assetsprecompile-error

 

Ruby on Rails Rake assets:precompile error

I'm new in Rails development and this is my first deployment to Heroku. When I execute my application (after the deployment) there is an error: 2011-09-18T21:05:54+00:00 app[web.1]: Completed 500

stackoverflow.com

이 문제를 해결하는 방법을 위의 stackoverflow에서 2가지 정도 찾았는데, 하나는 config을 건드리는 거고 나머지 하나는, 미리 pulbic 리소스를 컴파일하는 것이다.

 

1. 미리 컴파일 하기

[bundle exec] rake assets:precompile RAILS_ENV=production

이걸 한후에 커밋을 해서 올리면 이미 자료가 세팅 되어 있기 때문에 에러에 걸리지 않는다는 듯...

 

2. 컴파일 자동으로 하게 만들기

아까 같은 config/environments/production.rb 에 들어가서 

# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.public_file_server.enabled = true
config.serve_static_files = true

# Do not fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = true

정적일 파일들을 서버에 올리는 것을 허용하고, 컴파일을 자동으로하게 만들면 해결된다.

 

Asset Pipeline이 뭐지? 싶었는데... 알고보니 이런 것도 있었다.

https://negabaro.github.io/archive/rails-assets-pipeline

 

Rails assets:pipeline에대해서

 

negabaro.github.io

 

728x90
반응형