我在这里做引擎,它可以独立工作.
当我将它转换为gem并将其加载到另一个应用程序中时,我得到了许多未定义的错误,来自我的引擎gem的依赖.
这是gemspec:
s.add_dependency('paperclip')
s.add_dependency('jquery-rails')
s.add_dependency('rails3-jquery-autocomplete')
s.add_dependency('remotipart')
s.add_dependency('cancan')
Run Code Online (Sandbox Code Playgroud)
在应用程序中,当我进行bundle安装时,它列出了所有这些依赖项,但是当我运行应用程序时,我收到了很多未定义的方法错误(例如来自paperclip的has_attachment).似乎应用程序不加载引擎依赖项.这是默认行为吗?我可以改变吗?引擎内部的插件也发生了同样的事情.
如果我手动插入那些宝石,在应用程序Gemfile中,所有工作......
我在Google上搜索过,我刚刚发现了gem 的用途.如,宝石安装等
是.rb脚本的宝石集合吗?
如果我构建了一系列脚本,例如包含Google翻译功能的脚本,那么分发使用gem的首选方法是什么?
如果没有,我将如何分发此代码?
使用节点包管理器时,您可以指定npm install --save mynodemodule自动弹出模块的位置package.json
我想知道是否有一个Bundler命令允许你从命令行添加gem和版本到gemfile?
例如 bundle install --save nokogiri
似乎ruby 2.0.0在混合中添加了"默认"宝石,并且通过gem卸载使它们无法移除.
如何删除所有非默认宝石?
按照本教程[ link ]在专用服务器上安装gitlab.我需要 :
sudo -u git -H bundle install --deployment --without development test postgres aws
Run Code Online (Sandbox Code Playgroud)
但安装坚固时发生错误:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb
checking for cmake... no
ERROR: CMake is required to build Rugged.
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog …Run Code Online (Sandbox Code Playgroud) 我曾经对红宝石,宝石和所有相关的东西都没有任何问题.但在安装X Code Developer Tools并升级到Lion后,宝石无法安装.
我得到每个宝石的以下错误.这是sqlite的消息作为示例:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4/ext/sqlite3/gem_make.out
Run Code Online (Sandbox Code Playgroud)
什么地方出了错?怎么解决?
我想升级到Rails的4.0.0,和我换的宝石版本sass-rails和coffee-rails.我需要在升级到Rails 4之前rails和coffee-rails之前解决这个gem冲突.
当我运行时,bundle update这是我得到的输出:
$ bundle update
Updating git://github.com/pilu/web-app-theme.git
Fetching source index from https://rubygems.org/
Resolving dependencies..............
Bundler could not find compatible versions for gem "railties":
In Gemfile:
rails (= 4.0.0) ruby depends on
railties (= 4.0.0) ruby
coffee-rails (= 4.0.0) ruby depends on
railties (4.0.0.rc2)
Run Code Online (Sandbox Code Playgroud)
我的Gemfile:
source 'https://rubygems.org'
gem 'rails', '4.0.0'
gem 'cancan'
gem 'client_side_validations'
gem 'devise', '~> 1.5.3'
gem 'dynamic_form'
gem 'execjs'
gem 'haml'
gem 'httparty'
gem …Run Code Online (Sandbox Code Playgroud) 具体来说,红宝石oci8宝石.我安装了1.0.7和2.0.4.我想要1.0.7.
我可以只需要oci8,但我没有得到我想要的版本.
irb(main):001:0> require 'oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "2.0.4"
Run Code Online (Sandbox Code Playgroud)
我可以要求使用文件的完整路径,它可以工作,但不会是可移植的:
irb(main):001:0> require 'C:\Ruby\lib\ruby\gems\1.8\gems\ruby-oci8-1.0.7-x86-mswin32-60\lib\oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "1.0.7"
Run Code Online (Sandbox Code Playgroud)
我可以使用gem命令来询问我想要的版本,但它似乎没有实际加载库:
irb(main):001:0> gem 'ruby-oci8', :lib=>'oci8', :version=>'=1.0.7'
=> true
irb(main):002:0> OCI8::VERSION
NameError: uninitialized constant OCI8
from (irb):2
Run Code Online (Sandbox Code Playgroud)
如果加载库,我肯定会支持这种最后的方法,而不仅仅是确认它存在于我的系统中.我错过了什么?
有没有办法通过Gem模块检查当前是否安装了某些gem?从ruby代码,而不是通过执行'宝石列表'...
澄清 - 我不想加载库.我只是想检查它是否可用,所以所有的rescue LoadError解决方案都没有帮助我.此外,我不在乎宝石本身是否有效,只是它是否已安装.
所以Rails 3.1附带了一个鲜为人知的"rails g plugin new"生成器,它为你提供了一个适合rails gem插件的骨架.[http://guides.rubyonrails.org/plugins.html#or-generate-a-gemified-plugin]
这样做的一个有用的事情是为Test :: Unit的测试设置方便.它为您提供了一个基本的虚拟Rails应用程序,您的测试可以在上下文中运行,以测试仅在Rails应用程序副本中运行的"引擎"行为.(它把它放在./test/dummy中).但是你的测试仍然在my_gem/test中,测试不会存在于虚拟app中.并且my_gem/test/test_helper.rb在那里编写,测试将在虚拟应用程序的上下文中运行,在../dummy/config/environment上启动.
我之所以这样描述是因为我认为很多人都不知道这个新的发电机,它可以很好地设置.
但我的问题是,有没有人想出如何用rspec做这个呢?我曾尝试按照相同的原则DIY为rails specing中的rspec设置这样的东西,但我遇到了各种令人困惑的障碍,我希望也许别人已经弄明白了(或者有兴趣搞定它对我们其他人来说,嘿).