簡體   English   中英

Rails,MySQL和Snow Leopard

[英]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呢? 如果是這樣,您的設置是什么,更好的是,我該怎么做才能重現它?

我經歷了同樣的痛苦...這對我有用:

  1. 從mysql.com下載/安裝64位MySQL 5.1.37
  2. 運行以下命令:
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驅動程序。

我遇到了同樣的問題,這對我有用。

  1. 安裝Snow Leopard和64位MySQL DMG。

  2. 創建/etc/my.cnf中指向我以前的MySQL數據目錄(如描述這里 )並運行

    sudo mysql_upgrade

  3. 打開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}'}

  4. 卸載我已安裝的MySQL gem。

  5. 安裝了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關鍵字。 非常感謝。

我已經這樣解決了:

  1. 安裝mysql的dmg文件后
  2. 捆綁配置build.mysql --with-mysql-config = / usr / local / mysql / bin // mysql_config
  3. env ARCHFLAGS =“-arch x86_64”
  4. 捆綁安裝

從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版本一起使用。

  1. 如果尚未安裝,請安裝XCode。 我用的是4.0.2。 不幸的是,這已被Apple撤回,但可以在Internet上的其他位置使用。 可以從Apple免費下載3.2.x版,但是我沒有在本教程中對其進行測試,它可能也可以使用。

  2. 安裝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 
  3. 在rvm中安裝Ruby版本(例如1.9.2), 基本用法說明在此處

     user$ rvm install 1.9.2 user$ rvm use 1.9.2 
  4. 為在步驟2中安裝的rvm ruby 創建一個寶石集(x是版本號)。

     user$ rvm gemset create rails30x user$ rvm 1.9.2@rails30x 
  5. 安裝Rails 3.0.x(x是版本號)。

     user$ gem install rails -v 3.0.x. 
  6. 下載並安裝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中未包含目錄,則會出現一條有關未找到該庫的消息,並且服務器將中止。

  7. 安裝mysql2 gem。 (截至2011年5月,0.2.7版是Rails 3.0.x的最新工作版本)。

     user$ gem install mysql2 -v 0.2.7 
  8. 創建一個Rails應用程序,它是相應的數據庫(appname_development)。

     user$ rails new appname 
  9. 將此添加到應用的Gemfile中:gem'mysql2 gem 'mysql2', "0.2.7"

  10. 將此添加到應用程序的database.yml:

     development: adapter: mysql2 encoding: utf8 reconnect: false database: appname_development pool: 5 username: username password: pwd host: localhost 
  11. 啟動應用程序,然后檢查“關於您的應用程序的環境”。 一切都應該正常工作。

我以為我會在這里回答自己的問題。 似乎問題出在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM