Wednesday, October 23, 2013

রুবি অন রেইলস টিউটরিয়াল পর্ব ৮: রেইলসে কাজ করার সময় বিভিন্ন এরর এর সমাধান

আমি এই টিউটরিয়ালটিতে রেইলসে কাজ করার সময় বিভিন্ন এরর দেখা দেয় সেগুলো সমাধান ডকুমেন্টশন করে রাখার চেষ্টা করব।

১। 
 rails generate controller Pages home
এই কমান্ড দিয়ে আমরা নতুন পেজ তৈরি করি কনট্রোলারে কাজ করার জন্য। পেজটি রিমুভ করতে হলে এই কমান্ড দিতে হবে -
rails destroy controller Pages home

আবার model বা scaffold এর জন্য পেজ ক্রিয়েট করলে একই স্টাইলে ডেস্ট্রয় করব।
rails destroy model Pages home


2.
`default_controller_and_action': missing :controller (ArgumentError) in Ruby 3

বেশির ভাগ ক্ষেত্রে route.rb ফাইলে রাউটিং করার সময় ভুল করলে এই এররটি দেখায়।

3. 
job_posts টেবিলে যদি অন্য একটি টেবিলের country_id যোগ করতে চাই, এভাবে করতে হবে।
 rails generate migration Add_country_To_job_posts country:references 

4.
 রেইলসে singular আর plural নিয়া আছে বিশাল ভেজাল। যেমন আপনি কনট্রোলার ক্রিয়েট করবেন পোস্টের জন্য। তাহলে post না দিয়ে posts দিতে হবে। এখানে p বড় হাতে না দিলেও চলে।
rails g controller posts index

আবার মডেলের জন্য posts না দিয়ে post দিতে হবে। p বড় হাতের দেয়া ভাল।
rails g model Post title:string body:text

মানে হচ্ছে কনট্রোলারের ক্ষেত্রে plural এবং মডেলের ক্ষেত্রে singular ইউজ করতে হবে।

তবে কথা আছে, আমরা যখন job_posts টেবিলে countries টেবিলের আইডি ইনসার্ট করতে যাব তখন job_post না দিয়ে job_posts দিতে হবে। এবং countries না দিয়ে country দিতে হবে।

rails generate migration Add_country_To_job_posts country
:references


ডাটাবেজ টেবিলের নাম ছোট হাতের রাখা উচিত।
5.
আবার one to one বা one to many রিলেশনশীপে আমরা belongs_to এবং has_many ব্যবহার করে থাকি। তখন পোস্ট এবাবে ব্যবহার করতে হবে।
belongs_to :post
has_many :posts
has_one :post

6. 
বেশিরভাগ সময়  ল্যাপটপে কাজ করি। বাসায় গেলে ডেক্সটপে করতে হয়। তাই এমন একটি ডেক্সটপ পিসিতে আমার রেইলস প্রজেক্টটি রান করতে চেয়েছি যেটাতে রেইলস নিয়ে এত কাজ করা হয় নি। bundle install কমান্ড দিতেই নিচের এরর দেখালো -
An error occurred while installing pg (0.17.0), and Bundler cannot continue. Make sure that gem install pg -v '0.17.0' succeeds before bundling.
প্রবলেমটি সলভ করতে এই কমান্ডগুলো দিতে হবে -
sudo apt-get install libpq-dev

sudo gem install pg

bundle install
এবার সুন্দরভাবেই ইন্সটল হবে।

আবার bundle install করতে যেয়ে আরেকটা এরর পেয়েছিলাম। এটাও প্যাকেজের প্রবলেমের কারনে হয়েছিল। যেহেতু ডেক্সটপ পিসিতে আগে কখনও রেইলস প্রজেক্ট নিয়ে এতটা কাজ করা হয় নি।
An error occurred while installing mysql2 (0.3.14), and Bundler cannot continue.


এই প্রবলেমটা সল্ভ -
sudo apt-get -f install

sudo apt-get update

sudo apt-get install libmysqlclient-dev

bundle install


7. আমি একটা সাইট থেকে ডাটা স্ক্যাপ করার সময় এই এরর টি পাই -
“Incorrect string value” when trying to insert UTF-8 into MySQL

মানে হচ্ছে UTF-8 এর ভেল্যু ইনসার্ট করতে ডাটাবেজে সমস্যা হচ্ছে। এই সমস্যা সমাধানের জন্য mysql এর root এ গিয়ে এই কমান্ডটি এপ্লাই করতে হবে।
$ mysql -u root -p      // mysql এর রুটে যাওয়ার কমান্ড
$ use esljobsdb // ডাটাবেজ সিলেক্ট করতে হবে।
 তারপর এটি চালাতে হবে -
ALTER TABLE job_posts MODIFY COLUMN title VARCHAR(255)CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

ইউনিকোডের এই সমস্যাটা তৈরি হত না যদি আমি ডাটাবেজ ক্রিয়েট করার সময়ই ইউনিকোডে তৈরি করতাম। -
  CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;

ধন্যবাদ সবাইকে।
৮। অনেক সময় আমাদের ডাটাবেজের কলাম টাইপের পরিবর্তন করার দরকার হতে পারে। যেমন description এর ফরমেট text থেকে mediumtext এ চেঞ্জ করব -
rails g migration change_description_in_job_posts

তারপর মাইগ্রেশন ফাইলে এভাবে লিখতে হবে -

class ChangeDescriptionInJobPosts < ActiveRecord::Migration
def self.up
change_column :job_posts, :description, :mediumtext
end

def self.down
change_column :job_posts, :description, :text
end
end

এরপর rake db:migrate কমান্ড দিলেই ফরমেট চেঞ্জ হয়ে যাবে।

9. অনেক সময় mysql2 ইন্সটল করার সময় এই এরর দেখাতে পারে -
ERROR: Failed to build gem native extension - Error installing mysql2
তাহলে এই কমান্ড চালাতে হবে -
sudo apt-get install mysql-client libmysqlclient-dev 

10 . অনেক সময় আপটানাতে এই এরর মেসেজটি আসে -
opt/Aptana_Studio_3/plugins/com.aptana.git.core_3.0.0.1350339236/os/linux/askpass.tcl: 3: exec: wish: not found
error: unable to read askpass response from '/opt/Aptana_Studio_3/plugins/com.aptana.git.core_3.0.0.1350339236/os/linux/askpass.tcl'
fatal: could not read Username for 'https://github.com': No such device or address 
 
এই ক্ষেত্রে এই প্যাকেজগুলো ইন্সটল দিতে হবে, এই লিঙ্কে আরো ভাল সমাধান রয়েছে।-
sudo apt-get install tk && sudo apt-get install python-tk
  
11. অনেক সময় হিরোকোতে সাইট এরর দেখায়। নিচের কমান্ড চেপে আমরা দেখে নিতে পারি আসলে কোথায় ভুল হয়েছে -
heroku logs



12. হিরোকোতে আগের রিপোর সাথে পরের রিপো মিল না থাকলে আপডেটে সমস্যা হতে পারে। এ ক্ষেত্রে আমরা ফোর্স আপডেট করতে পারি। তবে সাবধান আপনার আগের কমিটগুলো সব চলে যাবে।
git push origin master --force


13. ইদানিং আমার ভিপিএস এ একটা সমস্যা হয়েছে ক্যাপিস্ট্রানো দিয়ে ডিপ্লয় করার পর সাইট আর আসে না। পরে বুজতে পারলাম unicron ঠিকমত রিস্টার্ট নেয় না তাই সমস্যা হয়েছে। ইউনিক্রন রিস্টার্স্ট দেয়ার কমান্ড -
service unicorn_esl_jobs restart

esl_jobs এর জায়গায় আপনার প্রজেক্টের নাম লিখবেন।

14. devise ইন্সটল দেয়ার নিয়ম -
gem "devise",  '~> 3.4.1'

তারপর
$ rails generate devise:install
$ rails generate devise User
$ rake db:migrate
$ rails generate devise:views

এখন লগিন বা রেজিস্ট্রেশন ফর্মের কোন কিছু চেঞ্জ করতে হলে views/devise এই ফোল্ডার থেকে করা যাবে।



No comments:

Post a Comment

এখানে আপনি আপনার মূল্যবান মতামতটি প্রকাশ করতে পারেন।