bundle update후 mysql2 에러가 나기 시작했다.

이유를 몰라서 찾아보는중 단서를 찾게 되었다.


사실 나랑은 크게 상관이 없는거 같긴한데 어쨋든 해결이 되었으니 올린다.


이번에 rails가 4.2.4버전으로 올라가면서 mysql2 최신버전과 호환이 완벽하지 않기 때문에

낮은 버전을 써야 한다고 한다


그래서 mysql2를 0.3.18버전을 쓰니 에러가 해결됐다.


사실 나도 왜 돼는지는 모르겠다...



WRITTEN BY
rabbbit
필기

,

dragonfly를 사용하여 이미지를 업로드 하고 보여주려고 하는데

image_tag가 작동 하지 않아서 몇일 고생했다..


결국 에러로그를 보고 해결을 했는데

에러 로그에 

sh: convert: command not found

이런 에러가 발생했다.


이 에러에 대한 해결책은 항상 그렇지는 않겠지만.

일단

/usr/bin/convert -version 을 했을때

버전 정보가 아닌 

-bash: /user/bin/convert: No such file or directory가 나온다면


ImageMagick을 설치 하면된다.


yum install ImageMagick


하면 sh: convert: command not found 에러 또한 해결이 된다.


어떤 library나 gem등에서 ImageMagick을 사용할때 이러한 에러가 난다면 꼭 설치 확인을 하고 설치를 하길바란다.


WRITTEN BY
rabbbit
필기

,

find / -name access_log -exec rm -f {} \;


access_log부분에다가 원하는 파일명을 쓰면된다.


디렉토리 까지 함께 삭제하고 싶으면


find / -name access_log -exec rm -rf {} \;


-r 조건을 추가해주면된다.


WRITTEN BY
rabbbit
필기

,

rails+nginx+passenger로 개발을 하면 몇가지 모드가 있다(꼭 이 조합으로 했을때는 아니고  rails에 존재한다)

production

development

test


production은 말그대로 개발한 제품을 출시할때 사용 하는 모드로 캐싱 기능이 켜져있다.

development는 개발할때 사용 하는 모드로 캐싱 기능을 꺼서 개발해서 바로 변경사항이 보일수 있도록 한다. 

test는 테스트를 할때 사용하는 모드이다.


enviroments에 관한 설명은 나중에 더 자세히 하고 간단하게 넘기겠다.


아무튼


production모드로 개발을 하려면 한번 변경 할때마다 서버를 껐다 켜야 하는 불편함이 있다.

그래서 개발할 때는 development모드를 사용하여야 하는데


nginx의 경우


rack_env development를


http,server,location ,if configuration 중에 한곳에만 넣고 서버를 재시작을 하면된다


추가 적으로


apache의 경우


RailsEnv development를


global server configuration, virtual host, <Directory>,<Location>, .htaccess, if AllowOverride 등중에 한곳에만 넣으면된다.



위의 옵션들을 적절히 사용하면 하나의 서버에서 여러개의 프로젝트를 레일즈로 개발하거나 deploy할때 특정 프로젝트에만 사용하는것도 가능하다.


마지막으로 development모드를 끄려면 위에 작성한 코드를 지우고 서버를 재시작하면 production모드로 되돌아 간다.


WRITTEN BY
rabbbit
필기

,

/var/log/nginx/error.log

에서 에러로그를 확인했을때


Devise.secret_key was not set. 
Please add the following to your Devise initializer:

이런 에러가 날경우에는


config/initializers/devise.rb


에서 config.secrey_key = '1eoij124l2j5po23~~~'이런식으로 되있는 줄이 주석처리 되어있을것이다.


이부분은 해제 하면 에러가 사라진다.


WRITTEN BY
rabbbit
필기

,

delploy할때 production모드가 default로 되어있기 때문에


config/environments/production.rb


에서 설정을 해줘야 한다.

 

 config.assets.compile = false

이렇게 설정되어있는 것을 false를 true로 변경하면 


css및 자바스크립트가 동작이 된다.



WRITTEN BY
rabbbit
필기

,

레일즈 서버를 시작할때 발생하는


rack/cache Be sure to add rack-cache to your Gemfile (LoadError) 이 에러는


config/environments 에서 devolopment.rb 혹은 production.rb 에 


config.action_dispatch.rack_cache 설정을 true로 해서 생긴 에러이다. 


이 설정을 꼭 true로 해야 겠다면 


rack-cache(gem 'rack-cache')를 설치하여야 하고 


그렇지 않다면 설정을 false로 해놓으면 에러가 사라진다.


WRITTEN BY
rabbbit
필기

,

rails에서 본인이 javascript를 작성하게되면

app/assests/javascript/에 

rails generator 명령어로 페이지를 생성할때와 같은 이름의 coffee script 파일이 생성되어있다.

여기까지는 문제가 없다.


만약 rails 개발자가 coffee script를 사용할줄 모르면 문제가 생기는데

coffee script를 모르기 때문에 javascript로 코딩을 하기 위해서 a.js파일을 생성해서 실행을 했는데 실행이 안된다.

그이유는 a.coffee라는 파일이 이미 존재하기 때문에 두개의 파일이 충돌이 일어나서 에러 한줄도 안뜬다(혹은 내가 레일즈 시작단계라 디버깅이나 로그 보는 법을 모를지도...) 실행이 되지 않는것이다.


이것의 해결책은 a.coffee를 지우고 a.js를 두면 작성했던 코드가 잘 실행이 된다.


rails 3.x 버전부터 coffee script가 default로 채택이 되어있다.

이유야 잘모르겠지만... 약간 불편한건 사실이다 

coffee script의 document를 잠깐보니 javascript의 문법을 확실히 가독성있고, 깔끔하게 만들어 주는거 같긴하다.


일단 나는 javascript도 잘 못하기 때문에 javascript부터 공부하고 한 번 본다면 많은 도움이 될거 같다.


WRITTEN BY
rabbbit
필기

,

google web font 뿐만 아니라 어떤 외부의 웹폰트를 적용할때 사용할 수 있는 방법이다.


맨 처음에는 google-webfonts-rails 라는 gem을 사용하려 했으나 막상 적용해보니 작동이 되지 않아서 github을 보니 커밋하지 않은지 1년이상이나 됐었다..


다른 gem이 있는 지는 모르겠으나 찾기도 귀찮고 폰트 파일을 통채로 불러오면 용량도 크고하니(물론 gem이 있다면 필요한 부분만 쓸수있게 해놓았을수도 있다.) 직접 필요한 부분만 가져와서 쓰는 방식을 사용하려고 한다.


웹폰트를 적용하는 방법은 두가지가 있다.


1. <link>태그를 이용해서 폰트를 넣고 싶은 html.erb 혹은 application.html.erb파일 맨위에 선언한다.

- 보통 한두개의 폰트를 홈페이지 전체에서 쓰기 때문에 application.html.erb파일의 head부분에다가 선언하는게 좋을거 같다.

2. app/assets/stylesheets/application.scss 파일에다가 @import를 사용해서 선언한다.


구글 웹폰트 같은 경우에는 폰트의 굵기마다 선택할수 있도록 되어있다. 다른 곳은 어떤지 잘 모르겠으나.

이렇게 굵기를 직접 정해서 쓰는 방식은 폰트를 꼭 쓰고 싶다면 웹사이트의 속도에 굉장히 많은 영향을 미치게 된다. 

영문 폰트같은 경우야 크지 않지만 한글 폰트같은 경우에는 굵기(font-weight)마다 용량이 못해도 거의 1메가가 되는것들이 대부분이기 때문에 필요한 굵기만 가져다 쓰는것이 좋다.


WRITTEN BY
rabbbit
필기

,

couldn't find file 'jquery.ui.all' with type 'text/css' 에러는


jquery-ui-rails 를 젬에 설치하고나서 


app/asset/javascript/application.js 에 require jquery.ui.all 

app/asset/stylesheets/application.css 에 *= require jquery.ui.all을 추가 했을때 생기는 에러이다.


이 에러는 jquery-ui-rails의 버전이 올라감에따라 각각의 파일에 선언하는 방식이 달라져서 생긴 에러다.


app/asset/javascript/application.js 에 require jquery-ui

app/asset/stylesheets/application.css 에 require jquery-ui 라고 추가하고 서버를 재시작 하면 에러는 사라진다.



이렇게 젬들이 업데이트 됨에따라 선언되는 방식이 달라질수 있으므로

이러한 에러가 날때마다. 젬들의 github이나 document를 수시로 확인해 봐야 겠다.


WRITTEN BY
rabbbit
필기

,