কম্পিউটার

রেলের কম পরিচিত বৈশিষ্ট্য 5.1

গত সপ্তাহে, RailsConf 2017 এর সময়, Rails 5.1 পাঠানো হয়েছে।

আপনি যদি ঘোষণাগুলি অনুসরণ করেন তবে আপনি বড় বৈশিষ্ট্যগুলি দেখেছেন:আধুনিক জাভাস্ক্রিপ্টের সাথে আরও ভাল একীকরণ, এনক্রিপ্ট করা গোপনীয়তা এবং সিস্টেম পরীক্ষা। এবং আমার ব্যক্তিগত প্রিয় আছে:অবশেষে form_for এর অদ্ভুত কম্বো থেকে মুক্তি পাচ্ছেন এবং form_tag , এবং এটিকে form_with দিয়ে প্রতিস্থাপন করা হচ্ছে . আমি এটি চেষ্টা করার জন্য অপেক্ষা করতে পারি না।

কিন্তু আমি যে কারণে Rails পছন্দ করি তা বড় নতুন বৈশিষ্ট্য নয়। এটি সামান্য, ক্রমাগত উন্নতি৷৷ এটি সেই মানের-জীবনের পরিবর্তন যা আমি যখন Rails অ্যাপগুলি লিখছি তখন আমাকে আরও খুশি করে। এবং রেল 5.1 সেগুলি পূর্ণ৷

আরো সামঞ্জস্যপূর্ণ ট্যাগ সাহায্যকারী

আপনি কি রেলের ট্যাগ সাহায্যকারী ব্যবহার করেছেন, যেমন tag এবং content_tag ?

<%= content_tag :p, @user.name, class: "name" %>

Rails 5.1 একটি নতুন ট্যাগ সহায়ক সিনট্যাক্স যোগ করে।

কল ব্যবহার করুন যেমন tag.div অথবা tag.br , এবং আপনি প্যারামিটার অর্ডার সম্পর্কে চিন্তা করা বন্ধ করতে পারেন এবং দুটি ভিন্ন পদ্ধতি নিয়ে কাজ করতে পারেন:

<%= tag.p @user.name, class: "name" %>
<%= tag.br %>

এই নতুন ট্যাগ সহায়কগুলি ডিফল্টরূপে HTML5 সমর্থন করে, এবং এমনকি আপনাকে আপনার নিজস্ব উপাদান তৈরি করতে দেয়:

<%= tag.pea @user.name, class: "name" %> 
<!-- turns into <pea class="name">Justin Weiss</pea> -->

শুধু পার্থক্যের চেয়েও বেশি কিছু দাবি করুন

আমি assert_difference পছন্দ করি . assert_difference এর আগে , আমি পরীক্ষায় স্থানীয় ভেরিয়েবলগুলি জাগল করতে অনেক বেশি সময় ব্যয় করেছি:

old_score = @user.score
@user.answer_question!(...)
assert_equal old_score + 10, @user.score

assert_difference সহ , আপনি কি করার চেষ্টা করছেন তা আরও পরিষ্কার:

assert_difference "@user.score", 10 do
  @user.answer_question!(...)
end

Rails 5.1-এ, assert_changes এটিকে আরও এক ধাপ এগিয়ে নিয়ে যায়।

assert_difference শুধুমাত্র গণনার পরিবর্তন চেক করে। কিন্তু assert_changes অ-সংখ্যাসূচক পরিবর্তনগুলি পরীক্ষা করতে পারে, যেমন দুটি স্ট্রিংয়ের মধ্যে পরিবর্তন, বা শূন্য এবং অন্য কিছুর মধ্যে:

assert_changes "users(:justin).name", from: "Justin", to: "Bob" do
  @user.update_attributes(name: "Bob")
end

একটি স্ট্রিং এর পরিবর্তে, আপনি এটি একটি ল্যাম্বডা দিতে পারেন:

assert_changes -> { users(:justin).name }, from: "Justin", to: "Bob" do
  @user.update_attributes(name: "Bob")
end

to: ===এর সাথে তুলনা করে এমন কিছু হতে পারে। যখন আপনি কিছু জানেন তখন এটি চমৎকার মান সম্পর্কে, কিন্তু বিশেষভাবে: এটা কি তা জানি না

assert_changes -> { users(:justin).updated_at }, to: ActiveSupport::TimeWithZone do
  @user.update_attributes(name: "Bob")
end

সবকিছু অর্পণ করুন

কিছু রেল কোডে, আপনি delegate দেখতে পাবেন পদ্ধতি ব্যবহার করা হয়। অর্পণ সহায়ক যখন আপনি অন্য শ্রেণীর উপরে আচরণ যোগ করতে চান, এটি থেকে উত্তরাধিকার ছাড়াই:

class Player
  delegate :id, :name, to: :@user

  def initalize(user)
    @user = user
  end
  
  def points
    Game.points_for_user(user.id)
  end
end

কিন্তু কখনও কখনও আপনি সবকিছু ফরোয়ার্ড করতে চান আপনি যে ক্লাসে মোড়ক নিচ্ছেন।

method_missing ব্যবহার করে রুবির সাথে এটি করার কয়েকটি উপায় রয়েছে অথবা SimpleDelegator . কিন্তু delegate এর সাথে আরও ভালভাবে মিলতে পদ্ধতি, delegate_missing_to Rails 5.1 এ যোগ করা হয়েছে। এটি ঠিক যা বলে তা করে:

class Player
  delegate_missing_to :@user

  def initalize(user)
    @user = user
  end
  
  def points
    Game.points_for_user(user.id)
  end
end

এখন, প্লেয়ার ক্লাসে নেই এমন কোনও পদ্ধতিতে যে কোনও কল @user-এ অনুসন্ধান করবে পরিবর্তে।

বোনাস:alias_method_chain চলে গেছে!

রুবি 2-এ আমার প্রিয় বৈশিষ্ট্যগুলির মধ্যে একটি হল মডিউল#প্রিপেন্ড। আমি এটি খুব পছন্দ করেছি, আমি এটি সম্পর্কে একটি পোস্ট লিখেছিলাম। বিশেষ করে, কিভাবে আমি আশা করেছিলাম যে মডিউল#প্রেপেন্ড অবশেষে alias_method_chain প্রতিস্থাপন করবে .

এবং Rails 5.1 অনুযায়ী, alias_method_chain এখন আনুষ্ঠানিকভাবে চলে গেছে - প্রিপেন্ড দিয়ে প্রতিস্থাপিত হয়েছে৷

রেলের নতুন সংস্করণ সবসময়ই উত্তেজনাপূর্ণ। কিন্তু এটিই বিশদ বিবরণ যা রেলকে এর সৌন্দর্য দেয়। আপনি যে কোডটি প্রতিদিন লেখেন তার সাথে ছোট পরিবর্তনগুলি আপনাকে আরও খুশি করে৷

আপনি কিভাবে এই পরিবর্তনগুলি খুঁজে পান? চেঞ্জলগগুলিতে ডুব দিন। আকর্ষণীয় টান অনুরোধ কটাক্ষপাত. নতুন, ছোট, 5.1 বৈশিষ্ট্যগুলির মধ্যে কোনটি আপনার জীবনকে কিছুটা সহজ করে তুলবে তা দেখুন৷

এবং আপনি যখন কিছু দুর্দান্ত জিনিস খুঁজে পান, তখন তা নিজের কাছে রাখবেন না। এটি এখানে শেয়ার করুন, যাতে আমরা সবাই নতুন কিছু শিখতে পারি!


  1. 10টি সর্বাধিক উপেক্ষিত উইন্ডোজ 10 বৈশিষ্ট্য

  2. Android TV-এর জন্য Android 11-এর সেরা 10টি বৈশিষ্ট্য

  3. আপনার আইফোনের নাম কীভাবে পরিবর্তন করবেন

  4. iOS 14 এর 8টি সেরা নতুন বৈশিষ্ট্য