Rails 3.1부터 prototype.js가 아닌 jQuery와 CoffeeScript가 Default로 탑재되어 있다.
만약 jQuery가 아닌 prototype.js를 계속 사용하고자 할 경우,
rails new [APP_NAME] -j prototype
해주면 된다.
새로 추가된 Gems
sass: haml에 포함되어 있던 sass가 독립되어 나왔다.
coffee-script
uglifier: JS를 하나의 파일로 합쳐준다.
jquery-rails
디렉토리 구조 변경
Public아래에 있던 Javascript, Stylesheets, Images가
/app/assets/ 로 이동되었다.
그러므로 웹엔진(Nginx등)에서 Js, Css, Image를 Rails한테 안넘기고 직접 처리하도록 세팅이 되어 있었다면, 관련 부분은 수정이 있어야 한다
Sprockets
application.css, application.js에 보면
//= require jquery
처럼 주석처리된 require들이 있는데, 이건 주석이 아니라 sprockets의 require(include)하는 문법이므로 해당 구문을 삭제하면 include가 안된다.
Migration
migration file의 change 메소드가 추가되었다.
과거에는 up, down으로 메소드가 분리되어 있었지만, change로 통합되었다.
하지만 종종 제대로 동작하지 않을때도 있는데 그럴땐 up, down을 만들어서 사용하면 된다.
그리고 :belongs_to가 추가되었는데, 과거 relationship을 같게 될 경우 직접 index key(article_id:integer)를 만들어 줬었다.
3.1 에서는 belongs_to를 이용하면 되는데.
rails g scaffold comment article:belongs_to body:text
이렇게 써주면되며, belongs_to로 만들면 add_index도 시켜준다.
Console
콘솔에서 DB Query가 노출이 되었는데.. 상황에 따라선 이게 과잉친절이 될 수 도 있을 듯 하다.
Active Record
:has_many에서 :through를 다중깊이까지 사용할 수 있게 되었다.
그리고 :through에서 :dependent 도 지원을 한다.
:as 가 추가되었다.
default_scope가 block으로 처리할 수 잇게 되었으며 lambda, method를 사용할 수 있다.
개인용 컴퓨터에 대한 새로운 아이디어를 얻기 위해 나를 도와 주셔서 감사합니다. 나는 또한 최고의 상태로 노트북을 유지하는 최선의 방법 중 하나가 하나의 컴퓨터의 맨 위에 일치 아마도 하드 플라스틱 형 재료의 경우, 또는 쉘 있었던 것으로 확신합니다. 그들이 자연 케이스에 완벽하게 맞도록 제작되므로 보호 장구 이런 종류의 독특한 모델이 될 것이다. 당신은 공급 업체에서 직접 이들을 구입하거나 그들이 당신의 노트북을위한 경우 타사의 장소를 통해, 그러나 자사의 모든 노트북은 시장에 대한 지출이있을 수 있습니다. 마찬가지로 이전, 귀하의 조언에 감사드립니다.
Database Authenticatable: encrypts and stores a password in the database to validate the authenticity of anuser while signing in. The authentication can be done both through POST requests or HTTP Basic Authentication.
Token Authenticatable: signs in a user based on an authentication token (also known as "single access token"). The token can be given both through query string or HTTP Basic Authentication.
마지막으로 login form(in views)에 email이 아닌 name으로 id입력을 받도록 수정해주면 된다.
5.5 controller customized (after signup) 얼마전 찾아보니, 1.2.rc에 이 기능이 추가되었다고 한다. https://github.com/plataformatec/devise/wiki/How-To:-Redirect-after-registration-(sign-up) 아래 쓴 내용은 이제 필요 없을듯.
더보기
회원가입 후 lading page 보여줄려고 관련된 delegate를 찾았는데.. 없다.
로그인 후, 로그아웃 후, 회원 정보 수정 후 는 있는데.. 회원 가입 후 만 없다.
해결하자니 귀찮고, 그냥 restful-authentication으로 갈까 고민하다가 잠깐의 삽질끝에 해결
controller에 Devise::RegistrationsController를 상속받는 RegistrationsController.rb 만들고 입맛에 맛게 수정하면 된다.
RegistrationsController.rb
class RegistrationsController < Devise::RegistrationsController
def create
build_resource
if resource.save
# set_flash_message :notice, :signed_up
render :text => "i just want landing page. :("
# sign_in_and_redirect(resource_name, resource)
else
clean_up_passwords(resource)
render_with_scope :new
end
end
end
이렇게만 한다고서 해결되지 않는다. Routes도 함께 수정을 해줘야 한다.
Routes.rb
get 'signup' => 'registrations#new', :as => :new_user_registration
post 'signup' => 'registrations#create', :as => :user_registration
여기서 웃긴건 controller name을 user로 해버리면 mission template된다.
꼭 registrations으로 해야 한다.
(controller name is must "Registrations")
- 알아낸게 아까워서 github wiki에다가 요 내용 추가할 계획. ㅎㅎ
6. Usage
6.1 restful-authentication에서 login_reqired와 같은 역활을 하는 authenticate_user!
2011/10/20 19:41TRACKBACK FROM 월풍도원(月風道院) - Delight on the Simple Life
windows 7 x64환경의 ruby 1.9.2에 mysql2 gem 설치하는 방법입니다.windows 7환경의 ruby 1.9.2에 mysql2 gem 설치하기gem을 설치하는 방법은 간단합니다.gem install mysql2하지만 안타깝게도 저의 64비트 윈도우 환..
2011/10/30 18:39TRACKBACK FROM 월풍도원(月風道院) - Delight on the Simple Life
맥에서 rvm(Ruby Version Manager)를 이용한 ruby on rails 개발 환경 구축 방법입니다.맥 OS X에 rvm을 이용해 ruby on rails 개발 환경 구축하기맥 OS X에서 루비 설치하기우선 터미널에서 아래의 커멘드를 이용해 RVM(Ruby Version Manager)을 설치합니다.$ bash < <(curl -s...
코드 설명을 세세하게 하면 싫어하실것 같아 간략하게 코드 설명을 하겠습니다.
Subscript의 writer_id를 이용하는 새로운 관계(belongs_to)를 만듭니다.
그리고 그 만든 관계명을 User에서 writer_id로 User를 불러와야 하는 곳(:subscriptions)의 :source로 써준 것이죠.
좀 찜찜하지만 이런식으로도 구현할 수 있습니다.
class User < ActiveRecord::Base
has_many :subscripts, :dependent => :destroy def subscriptions ids = self.subscripts.collect { |s| s.writer_id } User.find(ids) end
end
확장성의 제약이 있겠지만, 사용하는것에는 큰 문제점이 없을듯 하네요
하지만.. 그래도 역시 찜찜하죠? ㅎㅎ
여담>
지금 딱 새벽 6시 20분이네요. 오랜만에 와이프 아침밥이나 해주고 자야겠네요 ㅎㅎ (라고 말하고 기절하기)
댓글을 달아 주세요
안녕하세요.
2011/10/30 18:51 [ ADDR : EDIT/ DEL : REPLY ]저는 root :to => "home#index"가 기본으로 풀려있어서 그런지,
아직 루비 devise 때문에 컴퓨터가 기절한적은 없습니다.
트랙백 걸려고 검색 하다 들어와서, 루비온 레일즈 관련 포스트 잘 읽고 가네요..:D
행복한 하루 되세요!