[英]Rails, MySQL and Snow Leopard
我使用在WWDC上獲得的光盤升級到了雪豹。
現在嘗試運行我的一些Rails應用程序會抱怨sql
(in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/
-- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
Referenced from: /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
Reason: image not found - /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
(See full trace by running task with --trace)
我本可以發誓我曾經修復過這個問題。 問題是
sudo gem install mysql
不起作用並給出錯誤:
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/opt/local/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out
有沒有人得到mysql在雪豹上使用Rails呢? 如果是這樣,您的設置是什么,更好的是,我該怎么做才能重現它?
我經歷了同樣的痛苦...這對我有用:
sudo gem update --system sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
我還卸載了從10.5天開始浮動的所有mysql gem,如果上述方法對您不起作用,則可以這樣做:)
將mysql重建為64bit或安裝64bit版本很重要,但是您還需要確保將mysql gem的本機部分也重建為64bit(如果您使用的是原始的Intel Core Duo macs,則不適用)。
這是魔術命令:
env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
每當在Snow Leopard上使用本機組件進行gem安裝時,都應如上所述設置ARCHFLAGS。
如果使用捆綁程序,則可以使用“ bundle config”為mysql設置正確的構建參數,如下所示:
bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config
我為此花了很長時間,終於在Snow Leopard上使用它。 我最終從源代碼安裝了Ruby,RubyGems和MySQL(有關安裝Ruby和RubyGems的信息,請參見Hivelogic教程 。MySQL教程位於底部。) 我終於可以安裝寶石了,但是我仍然在
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
Expected in: flat namespace
dyld: Symbol not found: _mysql_init
Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
Expected in: flat namespace
Trace/BPT trap
我終於刪除了mysql.bundle
(我不知道這是做什么用的),並且一切正常。
sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
希望能對某人有所幫助。
我已經多次看到這個問題。 幾乎每次我在機器上構建mysql時。 我認為,您必須將mysqlconfig作為gem install命令的一部分傳遞。
sudo gem install mysql -- --with-mysql-config=/your/mysql/config
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
--srcdir=.
--curdir
--ruby=/usr/bin/ruby
--with-mysql-config
請記住,您需要mysql dev文件才能構建此gem。
安裝雪豹后,我的配置無法正常工作。 我在http://www.mamp.info找到了MAMP,它捆綁了Apache,PHP和MySQL。 您可以像安裝應用程序一樣安裝它,並且可以正常工作。 也許值得一試,它是免費的。
嚙合
我按照這篇文章( http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/ )中的說明進行操作,現在一切正常。
請記住要在他的命令中查找拼寫錯誤,以安裝mysql驅動程序。
我遇到了同樣的問題,這對我有用。
安裝Snow Leopard和64位MySQL DMG。
創建/etc/my.cnf中指向我以前的MySQL數據目錄(如描述這里 )並運行
sudo mysql_upgrade
。
打開IRB,並使用(通過blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html)重新安裝我的所有gem。
`gem list`.each_line {| line | 系統'sudo gem install#{line.split.first}'}
卸載我已安裝的MySQL gem。
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
到目前為止,一切似乎都可以進行。 *敲木*
設置ARCHFLAGS並傳遞--mysql-config = ...的說明似乎還不足以在Snow Leopard上為我解決此問題。 除此以外,我還添加了:
DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
到我的bash個人資料,這對我來說解決了。
如果您更喜歡home brew ,而不是手動安裝MySQL。
卸載現有的mysql gem(如果有):
sudo gem uninstall mysql
找到“ mysql_config”文件:
find /usr -name 'mysql_config'
重新安裝mysql gem:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/bin/mysql_config
注意:將/usr/local/bin/
替換為在步驟2中找到的相應mysql_config
路徑。同樣在我的博客上 。
伊恩·塞爾比(Ian Selby)非常感謝您,但我不得不從sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
前面刪除sudo
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
我正在安裝到gemset,並且正在使用rvm,我想問您不要使用sudo關鍵字。 非常感謝。
我已經這樣解決了:
從Rails休息了幾年,我只是花了一些時間來設置我的開發環境。 因此,我想為如何在SnowLeopard上安裝最新版本的Rails 3,MySQL和RVM創建一個教程,以希望節省其他人的時間。
它從2011年8月21日開始使用Rails 3.0.10,MySQL 5.5.15和RVM 1.7.2。 它應該與將來的Rails 3.0.x,MySQL 5.5.x和RVM 1.7.x版本一起使用。
如果尚未安裝,請安裝XCode。 我用的是4.0.2。 不幸的是,這已被Apple撤回,但可以在Internet上的其他位置使用。 可以從Apple免費下載3.2.x版,但是我沒有在本教程中對其進行測試,它可能也可以使用。
安裝rvm :
user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile user$ source .bash_profile
在rvm中安裝Ruby版本(例如1.9.2), 基本用法說明在此處 。
user$ rvm install 1.9.2 user$ rvm use 1.9.2
為在步驟2中安裝的rvm ruby 創建一個寶石集(x是版本號)。
user$ rvm gemset create rails30x user$ rvm 1.9.2@rails30x
安裝Rails 3.0.x(x是版本號)。
user$ gem install rails -v 3.0.x.
下載並安裝MySQL 5.5.x軟件包,啟動項和首選項窗格 。 所有這些3個都包含在DMG安裝文件中。 還要安裝MySQL WorkBench。
查找/ usr / local / mysql-version-name / support-files(插入正確的MySQL目錄名)並編輯mysql.server(具有root特權)。 在第46行附近找到以下行:
basedir= datadir=
並將其更改為讀取(插入正確的MySQL目錄名稱):
basedir=/usr/local/mysql-version-name datadir=/usr/local/mysql-version-name/data
保存文件。 現在可以從首選項窗格中啟動MySQL。
要使Rails 3使用mysql,請安裝mysql2 gem(請參閱下一步)。 首先,您需要設置DYLD_LIBRARY_PATH
以包括MySQL庫目錄。 為此,請在主文件夾中編輯〜/ .bash_profile,並添加以下內容(插入正確的MySQL目錄名稱):
export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH
如果在DYLD_LIBRARY_PATH中未包含目錄,則會出現一條有關未找到該庫的消息,並且服務器將中止。
安裝mysql2
gem。 (截至2011年5月,0.2.7版是Rails 3.0.x的最新工作版本)。
user$ gem install mysql2 -v 0.2.7
創建一個Rails應用程序,它是相應的數據庫(appname_development)。
user$ rails new appname
將此添加到應用的Gemfile中:gem'mysql2 gem 'mysql2', "0.2.7"
將此添加到應用程序的database.yml:
development: adapter: mysql2 encoding: utf8 reconnect: false database: appname_development pool: 5 username: username password: pwd host: localhost
啟動應用程序,然后檢查“關於您的應用程序的環境”。 一切都應該正常工作。
我以為我會在這里回答自己的問題。 似乎問題出在mysql中,而不是在mysql ruby綁定中。 我想通了,因為當我連接Querius(我的mysql gui)時,它能夠連接。
這是從源代碼修復綁定的方法:
cd /tmp
wget http://www.tmtm.org/en/ruby/mysql/ruby-mysql-0.2.6.tar.gz
tar xvfz ruby-mysql-0.2.6.tar.gz
cd ruby-mysql-0.2.6
./configure
make
sudo make install
我必須在Snow Leopard上從源代碼構建大量庫,並且它們不斷涌現。 MacPorts似乎尚未針對所有庫進行足夠的更新,因此我要自己完成。 下一步:freetype( http://download.savannah.gnu.org/releases-noredirect/freetype/ )
我嘗試了幾次帶有細微變化的archflag技巧,但對我沒有用。
什么終於做工作切換回與雪豹安裝紅寶石版和寶石。
我已經構建並安裝了自己的版本,該版本在各個方面都對我有用。 由於其他一切似乎都工作正常,我不禁猜測到mysql插件中有一些時髦的假設。 無論如何,我所做的就是再次將/ usr / bin切換到我的路徑中的第一位。 我已經在/usr/local/ruby-1.8.7和/usr/local/ruby-1.9.1中安裝了ruby,以便能夠輕松切換。 以為我會提到它,因為archflags解決方案似乎對很多人都有效,但並非所有人都適用。
我將$ MYSQL_HOME / bin中的mysql_config程序重命名為其他名稱,以使gem安裝程序中的配置腳本無法找到它。 即使我使用了libs選項,Gem安裝程序也始終使用我的mysql安裝中的編譯設置,該設置是二進制文件。 但是默認的ruby安裝僅為x86_64,因此gem的編譯失敗。 重命名mysql_config程序后,以下命令可以正常工作並安裝了gem:
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql
本文為我解決了這個問題:)
http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html
在豹之前
sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
PPC機器上的豹子:
sudo env ARCHFLAGS="-arch ppc" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
英特爾機器上的豹子:
sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
雪豹(僅在Intel上):
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
如果要通過RVM安裝mysql gem,則需要使用以下代碼進行安裝
sudo env ARCHFLAGS="-arch x86_64" gem install mysql
此方法在Leopard Server中對我有效,以上方法均無效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.