亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > Ruby on Rails框架程序連接MongoDB的教程

Ruby on Rails框架程序連接MongoDB的教程

熱門標簽:開封百應電銷機器人聯(lián)系方式 電話機器人電話卡封號怎么辦 北京語音電銷機器人價格 買了外呼系統(tǒng)不想用了怎么辦 武漢呼叫中心外呼系統(tǒng)線路商 真人語音電銷機器人系統(tǒng) 樂昌電話機器人 邯鄲外呼調研線路 浦東上海400開頭的電話申請

前邊有介紹mongodb的安裝以及ror項目的搭建,現(xiàn)在進行一下整合。

1.創(chuàng)建項目

創(chuàng)建項目時不再使用rails active_record支持

rails new todo -O

2.我們將要使用MongoMapper來驅動MongoDB到Rails

編輯GemFile,增加下面的內容

gem"mongo_mapper"

然后  執(zhí)行 bundle install 安裝gem

bundle install

3.添加數(shù)據(jù)庫鏈接

在config/initializer下面新建一個mongo.rb文件,指定全局的數(shù)據(jù)庫信息:

MongoMapper.connection = Mongo::Connection.new('localhost', 27017)


MongoMapper.database ='todo'#通過指定Rails運行環(huán)境參數(shù),我們可以在不同的運行環(huán)境下創(chuàng)建互不干擾的數(shù)據(jù),為了簡單起見,沒有為不同的環(huán)境指定不同的數(shù)據(jù)

if defined?(PhusionPassenger)

  PhusionPassenger.on_event(:starting_worker_process)do|forked|

    MongoMapper.connection.connectifforked

  end

end

完成以上步驟后,啟動程序:

$ rails server

**Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance.

You can install the extension as follows:

gem install bson_ext

If you continue to receive this message after installing, make sure that the

bson_ext gem is in your load path and that the bson_ext and mongo gems are of the same version.

=> Booting WEBrick

=> Rails 3.0.10 application starting in development on http://0.0.0.0:3000

=> Call with -d to detach

=> Ctrl-C to shutdown server

[2011-10-19 23:36:14] INFO WEBrick 1.3.1

[2011-10-19 23:36:14] INFO ruby 1.9.2 (2011-07-09) [x86_64-linux]

[2011-10-19 23:36:14] INFO WEBrick::HTTPServer#start: pid=19595 port=3000

從上面輸出中可以看到bson_ext庫沒有加載。按照提示安裝該庫即可(別忘了在gemfile中添加gem):

再次啟動程序,Notice提示消息消失,啟動正常。在瀏覽器輸入:http://127.0.0.1:3000,就可以看到如下頁面

4.添加頁面和處理邏輯

通過rails的generate命令來生成頁面、控制器和模型層文件(個人還是喜歡自己手動創(chuàng)建,這里為了演示方便)

rails generate scaffold project name:string --orm=mongo_mapper

由于我們使用mongo作為數(shù)據(jù)庫。那么,我們需要把ActiveRecord的model,改成MongoMapper的類型,也就是把繼承關系從ActiveRecord::Base變成MongoMapper::Document。我們使用key這個方法標明該MongoMapper的字段屬性。我們的屬性是name,再加上這個字段的類型String,那么定義如下:

classProject

  include MongoMapper::Document

  key:name,String

end

通過以上的修改,我們就已經擁有了所有添加,更新,刪除和列表的操作

5.數(shù)據(jù)查看

可以通過命令mongo進入mongodb數(shù)據(jù)庫進行數(shù)據(jù)的查詢

mongo //進入數(shù)據(jù)庫

use todo //切換庫

db.projects.find() //執(zhí)行查詢


6.其他

MongoMapper和ActiveRecord是完全相同的。甚至,MongoMapper還是支持ActiveRecord的驗證方式如下

validates_presence_of:name

由于MongoDB沒有schema-less(數(shù)據(jù)版本記錄)我們可以非常容易的添加和更改model的屬性,而不需要執(zhí)行任何migrations的操作。比如,我們需要添加一個priority的屬性,我們僅僅需要的是修改Project model如下:

classProject

  include MongoMapper::Document

  key:name,String,:required=>true

  key:priority,Integer

end

表之間的關聯(lián)對于MongoDB這里稍微有點區(qū)別,我們需要ObjectId類型來存儲所有id。

至于,處理不同表之前的關聯(lián),我們可以像ActiveRecord一樣定義belongs_to,當然,稍微有點不同,在Project中我們需要定義has_many :tasks,在MongoMapper中需要用many代替。

我目前也就做到這里。有時間再去深入研究其他的功能。

PS:Ruby編寫MongoDB備份腳本(fsync lock)

#!/usr/local/bin/ruby
# date:    06-12-2014
# auther: lucifer
# use fsync and lock to the file-system before backup the file-system
# mongo-ruby-driver version > 1.10.0

require 'mongo'
require 'fileutils'
require 'date'

include Mongo
include BSON

# the members of replcation-set
# test mongodb server version 2.6.0
# host = "192.168.11.51"

# The port of members
# If the port is 27017 by default then otherport don't need to assignment
# otherport = ""
# port = otherport.length != 0 ? otherport : MongoClient::DEFAULT_PORT

# opts = {:pool_size => 5, :pool_timeout => 10}
# Create a new connection
# client = MongoClient.new(host, port, opts)

uri_string = "mongodb://caoqing:xxxxxxxx@x.x.x.x:27017/admin"
client = MongoClient.from_uri(uri = "#{uri_string}")
db = client['admin']

# fsync and lock the database
cmd = OrderedHash.new
cmd[:fsync] = 1
cmd[:lock] = true
# p cmd
db.command(cmd)

# datafile path
d = "/var/lib/mongo"

# dir = Dir.new("#iu4e86s")
# entries = dir.entries
# entries.delete_if { |entry| entry =~ /^\./}
# convert the relative path to the full path
# entries.map! { |entry| File.join(dir.path, entry) }
# maintain only the type of file
# entries.delete_if { |entry| !File.file?(entry) }
# p entries

start = Date.today.to_s
prev = (Date.today - 7).to_s

dest = "/backup/#{start}"
sour = "/backup/#{prev}"

FileUtils.rm_rf("#{sour}") if File::exist?("#{sour}")

Dir.mkdir("#{dest}", 0755) unless File::exist?("#{dest}")

FileUtils.cp_r Dir.glob("#cyyugmm/**"), dest if client.locked?

puts "*" * 20
puts "\tbackup complete"
puts "*" * 20

# DB::SYSTEM_COMMAND_COLLECTION
# unlock the database
db["$cmd.sys.unlock"].find_one
client.close

您可能感興趣的文章:
  • 淺談Ruby on Rails下的rake與數(shù)據(jù)庫數(shù)據(jù)遷移操作
  • Ruby連接使用windows下sql server數(shù)據(jù)庫代碼實例
  • 在Ruby程序中連接數(shù)據(jù)庫的詳細教程
  • Ruby中訪問SQL Server數(shù)據(jù)庫的配置實例
  • ruby+nokogori抓取糗事百科前10頁并存儲進數(shù)據(jù)庫示例

標簽:自貢 宜春 鄂州 淄博 河北 松原 石嘴山 六安

巨人網絡通訊聲明:本文標題《Ruby on Rails框架程序連接MongoDB的教程》,本文關鍵詞  Ruby,Rails,框架,程序,連接,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby on Rails框架程序連接MongoDB的教程》相關的同類信息!
  • 本頁收集關于Ruby on Rails框架程序連接MongoDB的教程的相關信息資訊供網民參考!
  • 推薦文章
    精品久久久久久中文| 久草免费在线视频| 成人高清视频在线观看| 午夜激情视频在线观看 | 日本伦理黄色大片在线观看网站| 九九九网站| 日日夜人人澡人人澡人人看免| 日韩男人天堂| 免费的黄视频| 午夜久久网| 国产不卡精品一区二区三区| 黄色免费三级| 欧美大片a一级毛片视频| 国产精品自拍一区| 成人影视在线播放| 成人在免费观看视频国产| 国产视频一区二区三区四区 | 国产一区二区精品| 精品久久久久久综合网| 一级女性大黄生活片免费| 国产伦精品一区二区三区无广告 | 精品久久久久久中文| 四虎精品在线观看| 99久久精品国产免费| 黄视频网站免费看| 天天色色色| 成人av在线播放| 国产一区二区精品尤物| 免费的黄视频| 国产不卡福利| 免费国产在线视频| 亚洲 国产精品 日韩| 欧美a级大片| 九九干| 欧美一区二区三区在线观看| 精品视频在线观看免费| 香蕉视频一级| 精品国产一区二区三区精东影业 | 日本伦理黄色大片在线观看网站| 国产不卡高清| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美日本韩国| 99色视频在线观看| 香蕉视频久久| 国产一区二区精品在线观看| 日韩在线观看视频免费| 高清一级毛片一本到免费观看| 99热热久久| 国产成人精品综合在线| 欧美爱爱网| 美国一区二区三区| 黄色福利| 九九九国产| 国产福利免费观看| 欧美激情一区二区三区视频 | 久久国产影院| 欧美国产日韩精品| 可以免费看毛片的网站| 久久99中文字幕| 国产91精品一区| 免费毛片基地| 国产不卡在线播放| 久久久成人影院| 国产极品精频在线观看| 亚洲天堂免费| 成人a大片在线观看| 91麻豆tv| 精品在线观看国产| 精品久久久久久综合网| 99久久精品国产麻豆| 中文字幕一区二区三区 精品| 欧美1卡一卡二卡三新区| 欧美a免费| 国产网站免费| 天天色成人| 国产国语对白一级毛片| 精品视频在线观看视频免费视频| 国产精品1024在线永久免费| 国产视频一区在线| 国产成人精品综合久久久| 精品国产一级毛片| 天天做日日爱| 国产成人精品综合在线| 天天色成人| 精品在线观看一区| 久久国产精品只做精品| 久久国产精品只做精品| 免费毛片播放| 国产视频一区二区在线播放| 日韩专区第一页| 精品国产一区二区三区久 | 欧美激情一区二区三区视频高清| 高清一级毛片一本到免费观看| 国产伦理精品| 亚洲 激情| 九九免费高清在线观看视频| 日韩免费片| 成人免费观看的视频黄页| 久久精品免视看国产明星| 国产麻豆精品高清在线播放| 午夜在线亚洲| 免费毛片基地| 黄视频网站免费观看| 国产亚洲精品成人a在线| 九九精品久久| 日韩男人天堂| 日韩专区亚洲综合久久| 欧美一级视频免费观看| 亚欧乱色一区二区三区| 欧美日本免费| 一级女性全黄生活片免费| 黄视频网站在线看| 国产麻豆精品视频| 韩国三级一区| 亚洲 激情| 99久久精品国产免费| 欧美一级视频免费| 一级毛片视频播放| 一本伊大人香蕉高清在线观看| 国产91丝袜在线播放0| 一级女性大黄生活片免费| 国产一区二区精品在线观看| 99热精品在线| 91麻豆爱豆果冻天美星空| 国产麻豆精品视频| 国产一区二区精品久久91| 九九九国产| 青青青草影院 | 国产一区精品| 午夜欧美福利| 欧美电影免费看大全| 国产91素人搭讪系列天堂| 久久99中文字幕久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 精品国产香蕉在线播出| 黄色福利| 高清一级做a爱过程不卡视频| 国产视频一区在线| a级精品九九九大片免费看| 久久99这里只有精品国产| 九九久久99综合一区二区| 精品视频免费在线| 成人影视在线播放| 日本特黄一级| 久久成人综合网| 久久99这里只有精品国产| 国产国语在线播放视频| 一级毛片看真人在线视频| 国产一区免费在线观看| 欧美国产日韩久久久| 欧美一级视频免费| 精品国产三级a| 91麻豆tv| 四虎久久影院| 国产麻豆精品免费密入口| 久久福利影视| 国产精品自拍在线| 久久国产一久久高清| 久久国产影院| 国产不卡在线播放| 香蕉视频久久| 日韩男人天堂| 欧美一级视频高清片| 国产网站免费| 国产网站免费观看| 久久久成人网| 国产亚洲精品aaa大片| 夜夜操天天爽| 国产精品免费精品自在线观看| 日韩一级黄色大片| 亚洲女人国产香蕉久久精品| 精品国产一区二区三区久| 二级片在线观看| 国产成人精品影视| 久久99中文字幕| 中文字幕一区二区三区精彩视频| 一本高清在线| 国产不卡高清| 黄色免费网站在线| 色综合久久久久综合体桃花网| 可以免费看毛片的网站| 国产一级生活片| 久久久久久久网| 成人免费观看网欧美片| 精品视频一区二区| 日本特黄特黄aaaaa大片| 99久久视频| a级精品九九九大片免费看| 国产激情一区二区三区| 欧美大片aaaa一级毛片| 国产福利免费观看| 日韩在线观看视频免费| 青青久久精品| 国产精品1024永久免费视频| 国产成人女人在线视频观看 | 日本伦理黄色大片在线观看网站| 中文字幕Aⅴ资源网| 九九热国产视频| 欧美大片a一级毛片视频| 精品视频在线观看免费|