Ноорог
Ruby on rails дээр энгийн болон N*M гэсэн 2table(модел)-ийн assosocation-г хэрэглэж байсан ч доорх table-уудын хоорондох холбоог яаж хийхээ мэддэггүй G ахаас асуусан амарханаар хийчихдэг юм байна. Тиймээс ноороглоод орхихоор шийдлээ.
Доор Atable болон Btable-ийн assosocation-ийг үзүүлэв
class Atable < ActiveRecord::Base
has_many :A_Btables
has_many :Btables, through: :A_Btables
end
class A_Btable < ActiveRecord::Base
belongs_to :Atable
belongs_to :Btable
end
class Btable < ActiveRecord::Base
has_many :A_Btables
has_many :Atables, through: :A_Btables
end
Доор Ctable болон Btable-ийн assosocation-ийг үзүүлэв
class Ctable < ActiveRecord::Base
has_many :C_Btables
has_many :Btables, through: :C_Btables
end
class A_Btable < ActiveRecord::Base
belongs_to :Ctable
belongs_to :Btable
end
class Btable < ActiveRecord::Base
has_many :C_Btables
has_many :Ctables, through: :C_Btables
end
Үүн дээр Atable.Ctable гэж хандахын тулд Atable-ийн модел дээрээ доорх маягаар зарлахад л хангалттай.
has_many :Ctable, :through => :Btable
Uniq өгөгдөл авахын тулд доорх маягаар бичиж өгч бас болно.
has_many :Ctable, :through => :Btable, :uniq => true
Ингээд Atable.Ctable гэж хандах боломжтой болж байна. Янзтай байгаа биз. Хэрэв өөр хэл дээр иймэрхүү олон table дамжсан өгөгдөл select хийх программ бичвэл жаахан урт зүйл болж магадгүй байх. Харин ROR дээр модел хоорондын assosocation ийг зөв тодорхойлвол хялбархан хийх боломжтой.
Шүдний эмнэлэг явах цаг болчихоод маш яаруу бичлээ хаха.
Дараа ахиад сайн нягталж алдаатай зүйл байвал засна.
Friday, February 27, 2015
Sunday, February 15, 2015
vagrant up хийх үед алдаа гарвал
Vagrant up хийхэд үед
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:
mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant
The error output from the last command was:
/sbin/mount.vboxsf: mounting failed with the error: No such device
дээрх алдаа гарвал доорх дарааллын дагуу ажиллуулна.
1. vagrant ssh
2. sudo /etc/init.d/vboxadd setup
Removing existing VirtualBox non-DKMS kernel modules [ OK ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module [ OK ]
Building the shared folder support module [ OK ]
Building the OpenGL support module [ OK ]
Doing non-kernel setup of the Guest Additions [ OK ]
Starting the VirtualBox Guest Additions [ OK ]
3. exit
4. vagrant halt
5. vagrant up
Sunday, February 8, 2015
Ruby on rails-ийг MAC дээрх виртуал машин дээр хэрхэн суулгах тухай тэмдэглэл
Сүүлийн үед Ruby on rails жаахан оролдож үзэж байгаа юм. Миний хувьд ажлын машин(windows) дээр энгийн болон виртуал машин дээр ROR-ийг хэрэглэж үзэж байсан. Өмнө нь виртуал машингүйгээр MAC дээр энэ зааврийн дагуу суулгаж байхад нээх асуудал гараагүй. Харин гэрийн машинд(MAC) виртуал машин дээр ROR-ийг суулгаж үзэх санаатай оролдсон чинь нэг сайн болж өгдөггүй жаахан ухсаны эцэст энэ зааврын дагуу суулгалаа. Тэгээд монгол хэл дээр мэдээлэл их ховор байсан тул хэрхэн суулгах тухай тэмдэглэл үлдээе гэж бодлоо.
bundle exec rails server -b 0.0.0.0
Доорх хаягуудаар лавлах боломжтой.
Виртуал машин хэрэглэхгүй үед rails-ийг суулгах бол ийм гоё сайт байдагыг сүүлд мэдсэн. http://installrails.com/
За ингээд орчин бэлдэх ажилдаа орцгооё.
Доорх бичиглэлд тод хараар бичигдсэн хэсэг нь ажиллуулах хэрэгтэй команд болно.
Ашиглагдах орчин
- Mac OS x 10.9.4
- Virtualbox 4.2.26
- Vagrant 1.7.2
- Centos 7
- Ruby 2
- Rails 4.2.0
- Виртуал машиныг суулгах
- VirtualBox-ийг суулгах
- Vagrant-ийг суулгах
- Centos7-г татаж нэмнэ
- vagrant box add [өөрийн татаж авсан зам]
- Татаж авахгүйгээр доорх маягаар шууд нэмсэн ч болно.
- vagrant box add Centos7 https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
- Үр дүн
- box: Successfully added box 'Centos7' (v0) for 'virtualbox'!
- Үйлдлийн системийг vagrant-д init хийх
- vagrant init Centos7
- Үр дүн
- A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read
- Vagrantfile-д vagrant ийн тохиргоог хийж өгнө.
- vi Vagrantfile
- 27дахь мөрний коммент болгосон хэсгийг авч доорх өөрийн машинаас виртуал машин руу хандах хаягийг бичиж өгнө.
- config.vm.network "private_network", ip: "192.168.33.10"
- Vagrant ийг ачааллана.
- vagrant up
- Хэрэв алдаа гарвал үүнийг хараарай.
- Виртуал машин(vagrant дахь centos7) руу холбогдоно
- vagrant ssh
- Үр дүн
-
Last login: Sat Feb 7 12:27:04 2015 from 10.0.2.2-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory
- Бэлтгэл ажил
- Git-ийг суулгах
- sudo yum -y install git
- Үр дүн
- Хөгжүүлэх орчин учир firewall-ийг зогсооно
- sudo systemctl stop firewalld
- sudo systemctl mask firewalld
- rbenv ийг суулгах
- rbenv ийг суулгах
- git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
- Үр дүн Cloning into '/home/vagrant/.rbenv'...
- Path-ийг нэмэх
- echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
- rbenv ийг init хийх shell нэмэх
- echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
- Шалгах
- cat ~/.bash_profile
-
# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/.local/bin:$HOME/binexport PATHexport PATH="$HOME/.rbenv/bin:$PATH"eval "$(rbenv init -)"
- .bash_profile - ийг ачаалах
- source ~/.bash_profile
- install - ийг шалгах
- rbenv --version
- Үр дүн
- rbenv 0.4.0-129-g7e0e85b
- ruby-build - ийг суулгах
- git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
- Үр дүн
- Cloning into '/home/vagrant/.rbenv/plugins/ruby-build'...remote: Counting objects: 4354, done.remote: Total 4354 (delta 0), reused 0 (delta 0)Receiving objects: 100% (4354/4354), 785.94 KiB | 345.00 KiB/s, done.Resolving deltas: 100% (2247/2247), done.
- Ruby - ийг суулгах
- Ruby - ийн version - уудын жагсаалтыг харах
- rbenv install -l
- Үр дүн
-
Available versions:1.8.6-p3831.8.6-p4201.8.7-p2491.8.7-p3021.8.7-p3341.8.7-p3521.8.7-p357...........
...........
ree-1.8.7-2012.01ree-1.8.7-2012.02topaz-dev - rbenv install 2.1.3 - ийг суулгана. Өөрийн боломжтой хувилбарыг дээрх жагсаалтаас хараад суулгаж болно.
- rbenv install 2.1.3
- Үр дүн Downloading ruby-2.1.3.tar.gz...
- Хэрэв доорх алдаа гарсан бол sudo yum -y install openssl-devel ийг ажиллуулах .........
- Default - р хэрэглэх ruby - ийн version - ийг сонгох
- rbenv global 2.1.3
- Ruby - ийн version шалгах
- ruby -v
- Үр дүн ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-linux]
- Rails
- multi_json - ийг суулгах
- gem install multi_json -v '1.10.1'
- Үр дүн Fetching: multi_json-1.10.1.gem (100%)
- Bundler - ийг суулгах
- rbenv exec gem install bundler
- Үр дүн
Fetching: bundler-1.7.12.gem (100%)
-
rbenv rehash - ийг ажиллуулах
-
rbenv rehash
- Rails - н version - ийг шалгах
- gem search -r rails | grep "^rails ("
- Үр дүн rails (4.2.0)
- Rails gem - ийг суулгах
- gem install rails
- Үр дүн
Fetching: thread_safe-0.3.4.gem (100%)
- .bash_profile - ийг ачаалах
-
source ~/.bash_profile
- Шинэ project үүсгэх
- rails new [үүсгэх project - ийн нэр]
- Үр дүн create
- Хэрэв bundle install хийх үед доорх алдаа гарвал sudo yum -y install sqlite-devel ийг ажиллуулах
-
Gem::Ext::BuildError: ERROR: Failed to build gem native extension./home/vagrant/.rbenv/versions/2.1.3/bin/ruby extconf.rbchecking for sqlite3.h... nosqlite3.h is missing. Try 'port install sqlite3 +universal',
................
-
Gemfile - ийг нээж өөрчлөх
- vi cat/Gemfile
- 15дахь мөрийг комментийг авах gem 'therubyracer', platforms: :ruby
- #gem 'byebug' ийг коммэнт болгох
- Gemfile - ийг өөрчилсөн үед bundle install хийнэ
- bundle install --path vendor/bundle
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): extras/7/x86_64/primary_db | 43 kB 00:00:05
(2/2): updates/7/x86_64/primary_db | 6.6 MB 00:00:13
Determining fastest mirrors
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Package git-1.8.3.1-4.el7.x86_64 already installed and latest version
Nothing to do
remote: Counting objects: 2014, done.
remote: Total 2014 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (2014/2014), 326.86 KiB | 181.00 KiB/s, done.
Resolving deltas: 100% (1256/1256), done.
-> http://dqw8nmjcqpjn7.cloudfront.net/0818beb7b10ce9a058cd21d85cfe1dcd233e98b7342d32e9a5d4bebe98347f01
Installing ruby-2.1.3...
Installed ruby-2.1.3 to /home/vagrant/.rbenv/versions/2.1.3
BUILD FAILED (CentOS Linux 7 using ruby-build 20150130)
Inspect or clean up the working tree at /tmp/ruby-build.20150207090250.3881
Results logged to /tmp/ruby-build.20150207090250.3881.log
- ..........
- ..........
Successfully installed multi_json-1.10.1
Parsing documentation for multi_json-1.10.1
Installing ri documentation for multi_json-1.10.1
Done installing documentation for multi_json after 1 seconds
1 gem installed
Successfully installed bundler-1.7.12
Parsing documentation for bundler-1.7.12
Installing ri documentation for bundler-1.7.12
Done installing documentation for bundler after 4 seconds
1 gem installed
Successfully installed thread_safe-0.3.4
Fetching: minitest-5.5.1.gem (100%)
Successfully installed minitest-5.5.1
Fetching: tzinfo-1.2.2.gem (100%)
- ......................................
Done installing documentation for actionmailer, actionpack, actionview, activejob, activemodel, activerecord, activesupport, arel, builder, erubis, globalid, hike, i18n, loofah, mail, mime-types, mini_portile, minitest, nokogiri, rack, rack-test, rails, rails-deprecated_sanitizer, rails-dom-testing, rails-html-sanitizer, railties, sprockets, sprockets-rails, thor, thread_safe, tilt, tzinfo after 736 seconds
32 gems installed
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
- ................
- ................
- ................
Хэрэггүй Gem ийн нэр Gemfile дотор чинь байвал авч хаяаад bundle-ийг ахин install хийвэл болох учир өөрөө дуртай Gem ийг интернэт эсвэл https://rubygems.org/gems гэсэн сайтаас хайж авч болно. Ингээд орчингоо бэлдэж дууслаа. Харин өмнө нь виндовс дээр виртуал машин руу хандахад уг нь виртуал машин дахь Centos-ийнхоо iptables-ийг хааж өгөөд хандаж болоод байсан гэтэл сайн болж өгдөггүй жаахан g ахаас асуусан энд Rails - ийн өөрийнх нь өөрчлөлт юм байх rails - ийг асаах үед доорх маягаар зааж өгөх хэрэгтэй гэнэ.
bundle exec rails server -b 0.0.0.0
Доорх хаягуудаар лавлах боломжтой.
http://qiita.com/Salinger/items/20f466ffe7cc0c04b010
http://railsguides.jp/4_2_release_notes.html
За ингээд http://192.168.33.10:3000/ хаягаар доорх дэлгэц гарч ирвэл та амжилттай суулгасан гэсэн үг.
Дээрх зааварыг блогт бичихдээ алдаатай бичсэн зүйл байж болзошгүй тул анхаарч үзэх эсвэл доор комментоор үлдээвэл талархах болно. Дараа заваараа Rails - тай холбоотой бичлэгүүд үргэлжлүүлэн оруулахыг хичээх болно.
Доорх facebook group-д бас зарим нэг постуудыг оруулах болно. Одоохондоо хаалттай байгаа. Яваандаа мэдээлэлээ жаахан нэмж байгаад нээлттэй груп болгох бодолтой байна. Тиймээс энэ груп руу орох хүсэлтэй хүн байвал чөлөөтэй хүсэлт явуулж болно.
https://www.facebook.com/groups/1513847342202817/
Доорх facebook group-д бас зарим нэг постуудыг оруулах болно. Одоохондоо хаалттай байгаа. Яваандаа мэдээлэлээ жаахан нэмж байгаад нээлттэй груп болгох бодолтой байна. Тиймээс энэ груп руу орох хүсэлтэй хүн байвал чөлөөтэй хүсэлт явуулж болно.
https://www.facebook.com/groups/1513847342202817/
Хүндэтгэсэн Х.Мөнхбат
Subscribe to:
Posts (Atom)