好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

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

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

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

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

1.創建項目

創建項目時不再使用rails active_record支持

rails new todo -O

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

編輯GemFile,增加下面的內容

gem"mongo_mapper"

然后  執行 bundle install 安裝gem

bundle install

3.添加數據庫鏈接

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

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


MongoMapper.database ='todo'#通過指定Rails運行環境參數,我們可以在不同的運行環境下創建互不干擾的數據,為了簡單起見,沒有為不同的環境指定不同的數據

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命令來生成頁面、控制器和模型層文件(個人還是喜歡自己手動創建,這里為了演示方便)

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

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

classProject

  include MongoMapper::Document

  key:name,String

end

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

5.數據查看

可以通過命令mongo進入mongodb數據庫進行數據的查詢

mongo //進入數據庫

use todo //切換庫

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


6.其他

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

validates_presence_of:name

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

classProject

  include MongoMapper::Document

  key:name,String,:required=>true

  key:priority,Integer

end

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

至于,處理不同表之前的關聯,我們可以像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("#7nrrnr7")
# 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("#1r7ppnr/**"), 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與數據庫數據遷移操作
  • Ruby連接使用windows下sql server數據庫代碼實例
  • 在Ruby程序中連接數據庫的詳細教程
  • Ruby中訪問SQL Server數據庫的配置實例
  • ruby+nokogori抓取糗事百科前10頁并存儲進數據庫示例

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

巨人網絡通訊聲明:本文標題《Ruby on Rails框架程序連接MongoDB的教程》,本文關鍵詞  Ruby,Rails,框架,程序,連接,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ruby on Rails框架程序連接MongoDB的教程》相關的同類信息!
  • 本頁收集關于Ruby on Rails框架程序連接MongoDB的教程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 我的风流岳每3完整版| 《霸凌 ~复仇催眠~》第 1 季| 亚洲精品黑色丝袜系列| 男生露j直播appgay77| 漫画h| 丝男士2波多野结衣| 色电影| 片多多视频在线观看播放片| 流金岁月全集免费观看| ririai66国产在线观看| 成人做爰毛片免费看| 无码婬片A片AAA毛片艳谭| 免费永久看黄在线观看app| 日本艳鉧动漫1~6全集在线观看| 免费看美女无内衣内裤直播| 饥渴老翁一夜要了我三次在线观看| 迈开腿让我看下你的小莓| 1为什么喜欢0吞精| yjlzzjlzz亚洲乱码无码| 91麻豆精品国产91久久久久久久久| Free性XXXXⅩon视频| 成人免费毛片???果冻| 高潮爽到尿都喷出来了小说| 1000部18岁禁止| 亚洲精品无码久久久久秋霞| 日南响子在无奈之森呐喊电影| 主人别揉我胸啊嗯动漫| 不许穿内裤方便我做h| 九色免费视频| 999久久久国产| 美女扒开屁股让男人桶爽免费| 啊~轻点~网站在线观看免费| 奶头自从被对象吸过就容易疼| 亚洲另类激情综合偷自拍图| 宝贝的小嫩嫩好紧好爽h| 国精品无码一区二区三区在线蜜桃| 99热九九这里只有精品10| 欧美喷潮最猛视频| 好紧再快点好深好爽奶涨了| 一本色道a无线码一区v-爱岛国| 腐读阁双性总攻|