关于cloud_foundry自己的ruby, gem, bundle

Ruby-CloudFoundryBOSH是一个开源的工具链用于发布工程部署生命周期管理分布式系统的监控 Cloud Foundry BOSH是一个开源的工具链用于发布工程,部署、生命周期管理、分布式系统的监控 立即下载

很早就大致了解cloud_foundry有自己的ruby,而不是使用系统提供的ruby。并且还有两个版本的ruby,今天终于遇到了,大致搞清楚了。

他们在哪里

首先我们要知道cloud_foundry把自己的ruby,gem装到哪里去了,这个可以去看config目录下面的deployment_info.conf文件。里面包含了一个ruby_bin_dir变量。这个路径就是ruby所在,在本机上面是:/root/cloudfoundry/.deployments/devbox/deploy/rubies/ruby-1.9.2-p180/bin。

ruby下面有什么

在bin目录下面可以看到许多已近安装的软件,包括gem、rails、rack、bundle等。
这里的软件才是cf真正使用到的。
有个办法可以验证,我们在终端中直接输入:gem list --local查看安装的gem包,会发现gem非常少,bundle之类的根本没有。如果使用这个gem,那么vcap::common之类的模块也无法使用。
而如果跑到这个路径下面执行这里的gem,那么就可以看到所需要的结果了。

cf是怎么使用这里的软件的

既然知道了cf确实是使用这个位置下面的ruby的,那么到底在哪里做了这个相应的操作呢?
我们来看vcap_dev文件,在dev_setup/bin目录里面的。我在 http://blog.youkuaiyun.com/cherry_sun/article/details/7730008里面分析过,我们start的时候是通过
exec_cmd("#{ruby_binary} #{vcap_launch} #{command} #{vcap_components["components"].join(" ")} -c #{deployment_config_path} -v #{vcap_path} -l #{deployment_info["deployment_log_path"]}")
这句话来执行start的,那么这里的ruby_binary其实就是我们上面提到的ruby的绝对路径。有兴趣可以去看下代码。归根到底,这个ruby的路径还是从前面提到的deployment_info.conf文件中取得的。而这个文件其实是vcap_dev_setup在安装的时候写入的。

cf的gem和bundle如何发生作用的

我们知道要让ruby项目取得依赖,我们可以利用gem和bundle来实现。使用bundle install来安装相应的gem包,然后在项目当中写下:
require "rubygems"
require "bundler/setup"
两行代码(可以看bundler官网: http://gembundler.com/)

第一步

在cf当中,第一步bundle install是在安装时完成的,现在采用chef了,就是在chef的cookbook中定义的。我在 http://blog.youkuaiyun.com/cherry_sun/article/details/7730008中已经有提到了,可以参看最后一部分,cloud controller的recipe分析,其中的 cf_bundle_install就是在做bundle install。当然,这个bundle也是使用了cf自己的bunlder:File.join(node[:ruby][:path], "bin", "bundle")

第二步

然后就是两个require了,这里有两个实现方式。
首先是最简单的,看dea/lib/dea/dea.rb最开头,就有两句:
require 'rubygems'
require 'bundler/setup'

第二种要看vcap/cloud_controller/config/boot.rb文件了,这个文件的最前面有:
require 'rubygems'
require 'erb'
begin
  require 'fiber'
rescue LoadError
  $stderr.puts "CloudController requires a Ruby implementation that supports Fibers"
  exit 1
end

# Set up gems listed in the Gemfile.
gemfile = File.expand_path('../../Gemfile', __FILE__)
begin
  ENV['BUNDLE_GEMFILE'] = gemfile
  require 'bundler'
  Bundler.setup
rescue Bundler::GemNotFound => e
  STDERR.puts e.message
  STDERR.puts "Try running `bundle install`."
  exit!
end if File.exist?(gemfile)

想必应该可以看懂了,就是在把bundle和gem加载进来。这个boot.rb被health manager调用到了,我们可以看health_manager.rb文件最前面的部分:
  def self.setup
    $:.unshift(lib_dir.to_s) unless $:.include?(lib_dir.to_s)
    require root.join('config', 'boot')
    require 'active_record'
    require 'active_support/core_ext'
    require 'yajl'
    require 'eventmachine'
    require 'nats/client'
    require 'vcap/common'
    require 'vcap/component'
    require 'vcap/logging'
    require 'vcap/rolling_metric'
    require 'vcap/priority_queue'
也是一目了然,把上面提到的boot.rb require进去了。

第一部分:VTK基础入门(第1章:VTK简介与概述) VTK简介与核心特性概述 VTK(Visualization Toolkit)是一个开源的跨平台C++类库,专用于3D计算机图形学、图像处理和科学可视化。由Kitware公司开发,VTK自1993年起源以来,经历了开源化、成熟化和现代化多个发展阶段,现已成为科学可视化的核心工具之一。 VTK的核心特性包括: 管道架构:模块化设计实现数据流管理 丰富的数据支持:处理多边形数据、图像数据等 强大的渲染能力:集成OpenGL,支持多种渲染技术 最新版本VTK 9.4.2增强了现代C++支持,优化了内存管理,并提升 阅读详情

相关推荐

华为使用MicroG安装并使用Google服务教程

鉴于众多华为手机用户因无法使用Google服务而感到不便,我经过多次摸索和测试,总结了一份简单易懂的教程,希望能够帮助到大家。无论是需要使用Google Play商店下载应用,还是需要使用Google服务进行工作和学习,本文将详细介绍如何在华为手机上安装并使用Google服务。二、前置条件软件要求:Aurora Store(替代Google Play商店)、MicroG Companion、MicroG Server(替代Google框架)

weixin_41926602的博客 3万+

Ruby on Rails 入门之:(1) Ruby, Rails, gem, bundler相关软件的安装

最近接触了一个项目,使用Ruby on Rails进行开发,所以我也简单的接触了一下,对项目没有什么帮助,但是学习了一下在linux下进行Ruby on Rails的开发。 把我学习的东西做个总结,供大家分享。总体来说Ruby on Rails在国内的教程还是非常少的。 1. Ruby简介 Ruby是面向对象的编程语言,追求的是“简单便捷的面向对象编程”。Ruby是解释型的语

Work Hard, Play Harder! 2936

Fedproto:原型聚合的联邦学习框架

文中说明,联邦学习通过计算传递梯度聚合模型时,客户端之间的异构性通常会阻碍模型优化收敛和泛化性能。故本文提出新的FedProto框架,将梯度替换成为原型,通过计算、聚合从不同客户端收集到的本地原型,然后将全局原型发送回所有客户端,以规范本地模型的训练。对每个客户机进行局部训练的目的是最小化对本地数据的分类损失,同时保持生成的本地原型足够接近相应的全局原型(损失函数最小+正则)。什么是原型?文中提到:“

weixin_47754029的博客 2650

Cloud Foundry使用

1. 本地安装ruby 和 rubygem 2. 安装vmc:  gem install vmc 3. 注册cloud foundry帐号 4. 使用vmc登录:  vmc target api.cloud foundry;   vmc login(输入注册的帐号和密码) 5.上传应用 vmc push 一些常用的vmc命令 1. vmc update 2. vmc app

chinant的专栏 575

某头部能源集团“数据治理”到“数智应用”跃迁案例剖析

本次案例能源企业实现了从“数据可用”到“指标驱动”再到“智能决策”的全链条升级,标志着集团在数字化、智能化治理能力上的系统跃升,构建起面向未来的数智管理新范式。

a958014226的博客 1258

数据库行转列的sql语句

 问题描述假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82现在 想写  sql 语句     查询后结果 为    姓名 语文 数学 物理张三 80 90 85李四 85 92 82       该怎么实现 ?研究意义        这是个并不复杂的问题,但却是数

jb303的专栏 2248

CloudFoundry入门

本文来源于 Cloud Foundry 官方提供的文档。更多教程请点击 CloudFoundry 官方文档。 什么是Cloud Foundry Cloud Foundry是一个开源的平台即服务产品,它提供给开发者自由度去选择云平台,开发框架和应用服务。Cloud Foundry最初由 VMware 发起,得到了业界广泛的支持,它使得开发者能够更快更容易的开发,测试,部署和扩展应用。Cl

Jmark 2307

告别ROS1!在Ubuntu 22.04上为VINS-Fusion适配ROS2 Humble的完整踩坑记录

本文详细记录了在Ubuntu 22.04上将VINS-Fusion从ROS1迁移到ROS2 Humble的完整过程,包括环境搭建、依赖管理、核心代码适配及性能优化。通过实战案例和调试技巧,帮助开发者高效解决迁移过程中的常见问题,提升系统稳定性和性能。

weixin_42628688的博客 281

Gem 与 Bundler - Ruby项目依赖管理

Gem 与 Bundler - Ruby项目依赖管理 (此文转载,抱歉忘记出处了) gem与bundler是关于一个ruby项目的软件包依赖的, 它们是以一个ruby项目为中心的. 如果是跟项目无关的ruby运行环境的配置管理, 需要去了解 rvm 与 gemset. gem: gem就是ruby的软件包. 一个gem就是一个ruby软件.

Tony的专栏 1万+

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

SAP_SD模块更改销售订单定价简介

方式优点缺点适用场景MASS简单,无需开发不能触发重新定价逻辑修改特定字段BDC (VA02)可模拟人工操作维护复杂,速度慢少量订单批改稳定、安全需ABAP支持推荐用于批量重新定价VBOF标准重算返利仅适返利类条件返利更新通过本文,我们了解了 SAP 的[SAP_SD模块更改销售订单定价]的基本概念和应用方法。希望这些信息能帮助您在实际工作中更好地使用 SAP 系统,提高工作效率和管理水平。更多SAP文章请点击更多SAP文章更新,大家一起学习进步!!!

我小时候很黑的博客 715

V8 Snapshot 与 Serializer 系统架构:从堆快照到启动加速的完整解析

V8 引擎通过 **Snapshot(快照)** 系统将"标准库解析编译 + 堆初始化"这一昂贵的启动过程提前到构建期完成:构建时用 `mksnapshot` 工具运行一个最小化的 V8 实例,把完全初始化后的堆状态序列化并持久化;运行时每个新 Isolate 启动只需反序列化恢复堆状态,从而大幅缩短启动时间。本文以 [docs/snapshot/architecture.md](https://

gitblog_01064的博客 1042

【小白深度教程 1.3】使用 BP-Net 深度补全网络,进行 KITTI 稠密点云和图像融合(Depth Completion 实战)

在上一节中,我们展示了如何将从激光雷达获取的稀疏点云(深度)映射到图像。因此这篇论文我们尝试使用 Depth Completion(深度补全)技术,来将稀释的点云深度,补全为稠密深度。

2401_87064292的博客 1200

Kandan部署全攻略:从内部服务器到第三方托管的最佳实践

想要为团队搭建一个私有的、功能强大的聊天平台吗?Kandan开源聊天工具为您提供完美的解决方案!作为HipChat的开源替代品,Kandan让您可以在内部服务器或第三方托管平台上轻松部署团队聊天服务。本文将为您详细介绍Kandan的完整部署指南,从本地安装到云端托管,帮助您快速搭建专属的团队协作空间。🚀 ## 为什么选择Kandan作为团队聊天工具? Kandan是一个专为企业和团队设计的开

gitblog_00207的博客 371

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

CS-Xmind-Note:408计算机专业课思维导图上手指南

CS-Xmind-Note 是一套覆盖 6 大科目的 408 思维导图与 408 笔记体系,按计算机组成原理、数据结构、操作系统、计算机网络、数据库与信息安全逐科整理,基于经典教材绘制,适合 408 考研复习与日常知识梳理。 ## 项目概览:你能拿到什么 仓库把 408 的六门课拆成独立目录,每门课都提供可交互的 `.xmind` 导图、Markdown 笔记与导出的 `.png` 图,三者同

gitblog_00285的博客 386

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

CloudFoundry的状态监控:varz

CF的组建其实都有自己的状态监控,我们可以通过http查看他们的状态。这个就是varz。 比如我们在dea.yml配置文件中加入: status: port: 2222 user: user password: pw 然后http访问http://本机的ip:2222/varz,那个ip不能是localhost或者127.0.0.1,必须是对外的ip。然后就会有验证信息,输入上面

cherry_sun的专栏 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

cloudfoundry dev setup 分析以及chef学习

cf通过chef可以部署单节点实例。只需要按照http://support.cloudfoundry.com/entries/20407923-single-multi-node-vcap-deployment-using-dev-setup的介绍即可安装。本文就尝试着分析一下整个部署的流程,同时也对chef进行一些学习。 vcap_dev_setup 好了,首先从最外部的脚本进入,就是bin

cherry_sun的专栏 7918

CloudFoundry DEA运作源码分析

这篇文章结构比较糟,我在http://lory-yang.com/2012/09/09/cloud-foundry-dea/中做了一些改进,可以去那里看看。另外我的博客整体搬迁到独立地址了:lory-yang.com,欢迎大家来访问 本文是对Cloud Foundry中的DEA组件源码的一些分析。有点流水帐的感觉,就事论事吧,同时因为本人能力有限,而且研究不深,错误在所难免。诸位就随便看看,

cherry_sun的专栏 5998

cloud controller 源码分析(包括Ruby on Rails项目结构分析)

本文记叙我作为一个完全不懂ror(ruby on rails)的开发者,了解ror以及cc所需的知识。全文包括了cloud controller的代码结构,MVC架构分析,最后有一个例子帮助分析。 目录结构 cc是一个ror项目,所以是按照ror的目录结构来安排的,如下所示。 app:是web应用的主程序目录,包含了mvc组件的代码config:runtime rules,r

cherry_sun的专栏 5387

VMC源码的简单分析

简单看了下VMC的源码,写一个类似提纲的东西。文章里面主要包括VMC各个代码块和他们实现的功能,通过一个命令的实现流程来分析。 VMC执行一条命令的流程: 1. bin/vmc vmc是一个gem包,所以我们可以在自己的gem文件夹下面找到他们,执行vmc命令其实就是运行bin目录下的vmc文件。这个文件很简单,首先require lib/cli.rb,然后调用VMC::Cli:

cherry_sun的专栏 4457

Cloud Foundry新版router源码分析

调整格式太费力了,这里直接粘帖过来了,原文我写在自己的博客上了:http://lory-yang.com/2012/08/06/cloud_foundry_router/。 Cloud Foundry在几个月前改进了它的router,我们可以在新版cloudfoundry解密中看到它的介绍: 上个版本中。Router作为一个nginx脚本存在。所以的请求都必须经过Ruby代码,然后

cherry_sun的专栏 4431

cloud foundry 默认文件路径列表

本文致力于列一份cloudfoundry默认的文件分布路径列表,方便大家查询。 vcap代码:/root/cloudfoundry/vcap config文件:/root/cloudfoundry/.deployments/devbox/config log:/root/cloudfoundry/.deployments/devbox/log 安装的ruby gems(可以去那

cherry_sun的专栏 4355

Cloud Foundry vcap_dev start过程分析

我们会通过bin/vcap_dev start命令来启动所有的cf组件,当然,也可以指定某些组件,比如bin/vcap_dev start health_manager。 下面大致研究下流程。 1. vcap_dev文件 首先是vcap_dev文件,前面主要处理了命令参数以及路径等问题。最后可以看到 exec_cmd("#{ruby_binary} #{vcap_launch} #{c

cherry_sun的专栏 4348

cloud controller和health_manager can't connection to server when starting

电脑挪了个地方,发现cc和hm启动的时候直接无法连接server了,exception是在postgresql的类当中抛出来的。 经过磊哥的帮忙,发现问题在于postgersql的配置文件出现问题了。在/etc/postgresql/8.4/main/postgresql.conf文件最后,有一个监听ip,localhost似乎完全没有作用,然后因为换了地方,ip变动,所以原来的ip也不对了,因

cherry_sun的专栏 3340

VS Code + KXApp 开发 iOS 报错排查指南,工程、签名、真机、补全、配置

在 VS Code 里用 KXApp 开发 iOS,报错常不在代码而在环境。本文按失败阶段分五类排查:工程没出现 Xcode 视图(查 .xcodeproj 与 xcode-select)、构建失败(No profiles、Team 签名、CocoaPods 用 .xcworkspace)、真机调试失败(信任、开发者模式、设备未准备好)、没补全或 No such module(等索引、清 clangd 冲突)、设置保存不了(装 xcodeproj gem),每类给现象、日志通道和修法。

2501_91590906的博客 222

【混合缓存】五种同步通道与它们的失效模式:为什么 Pub/Sub 不可靠反而是对的(五)

本文剖析混合缓存同步层的五种实现(Redis Pub/Sub、RocketMQ、Kafka、RabbitMQ、NATS),指出选型关键不在延迟、吞吐或运维成本,而在于“丢、重、乱”三种失效形态。核心结论:同步消息仅传递“失效指令”,而非数据本身,因此“重”与“乱”因幂等性无害,唯有“丢”需兜底。通过分析各通道在消息丢失场景下的表现,揭示其本质差异——真正决定系统可靠性的,是“何时丢”及“靠什么兜底”。最终强调:同步层只需低延迟通知,可靠性由时间上界(如forceExpiryTime)保障,无需通道保证完全可

tantan的小记录 449
上一篇: cloud controller和health_manager can't connection to server when starting
下一篇: RVM初次见面
Lory_yang
博客等级 码龄18年 48粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值