Friday 8 May 2015

What is new in rails4?

 Source : http://railscasts. Com/episodes/400-what-s-new-in-rails-4? View=asciicast  
 1. Concerns - http://stackoverflow. Com/questions/14541823/how-to-use-concerns-in-rails-4  
 2. Console-specific configuration here such as using pry  
 3. Postgress  
 rails 4 has support for native datatypes in postgres and we’ll show two of these here, although a lot more are supported: array and hstore. We can store arrays in a string-type column and specify the type for hstore.  
 4. New activerecord features  
 a. All method. This now returns an activerecord relation instead of an array of results which means that it’s now lazily loaded and only triggers a database query when it needs to. This also gets rid of the need for the scoped as it replaces this functionality  
 b. Load method - this will trigger the database query but return an activerecord relation instead of an array of results.  
 c. None method - which will return a activerecord relation with no records  
 d. Speaking of scopes, we can now call not on the where scope to invert it.  
 e. The order clause now accepts a hash so we can pass in a column name and the order that we want the results to be in. We can also pass in multiple column names to order by multiple columns.  
 f. Another useful new method is find_by. We’ve always been able to use dynamic finders, such as find_by_name, but these rely on method_missing and the implementation isn’t very clean. Rails 4 introduces a find_by method that we can pass a hash to, like this:  
 >> article. Find_by name: "hello"  
 5. Activemodel::model  
 6. Public/index. Html : this means that we no longer have to delete the public/index. Html  
 7. Gemfile changes  
 new default gem  
 1. Sprockets-rails  
 2. Turbolinks  
 8. Controller  
 a. Before_filter -> before_action  
 b. The next thing of note is that the update action now responds to either a put request or a patch request.  
 c. Update_attributes method-> update  
 d. Strong parameters built in replaces attr_accessible.  
 9. Scope syntex change  
 class article < activerecord::base  
  scope :sorted, order(:name)  
 end  
 class article < activerecord::base  
  scope :sorted, -> { order(:name) }  
 end  
 10. Changes to views  
 a. Lot of new helper methods  
 collection_select helper method aready exist  
 collection_check_boxes and collection_radio_buttons to generate lists of checkboxes or radio buttons for an association  
 there are also helper methods for the different html 5 input types.  
 b. Template handlers  
 c. Cache digest  
 11. Routes. Rb  
 concern  
 /config/routes. Rb  
 resources :articles do  
  resources :comments  
 endresources :photos do  
  resources :comments  
 end  
 ----------------------------  
 concern :commentable do  
  resources :comments    
 end  
 resources :articles, concerns: :commentable  
 resources :photos, concerns: :commentable  
 b. Match method depricated.  
 c.  
 get 'foo', to: 'articles#index', constraints: {protocol: "https", subdomain: "test"}  
 "https://test. Example. Com/foo"  
 12.  
 /config/environments/production. Rb  
 config. Eager_load = true  
 previously this behaviour was enabled using an option called threadsafe!  
 13. Testing  
 a. Instead of having unit and functional directories we have controllers, models and so on making it structured more like rspec is. Also, this now uses minitest.  
 b. This now has a different look and if a routing error is thrown it shows a list of the valid routes which is useful.  
 c. /rails/info path.  
 there were several things that were removed from rails 4 such as  
 activeresource, model observers, page and action caching and disabling rack::cache  
  by default. All of these can be brought back by using various gems if  
 you can’t live without them. One feature that we haven’t covered here is  
  actioncontroller::live. This will be covered in detail in a  
  future episode as it’s big enough to deserve one to itself. If you were  
  expecting a queueing api with asynchronous mailing support this has  
 been pulled from rails 4. 0 but should be included in rails 4. 1.