【问题标题】:Rails: moving development environment from windows(mingw32) to OS X mountain lionRails:将开发环境从 windows(mingw32) 迁移到 OS X 山狮
【发布时间】:2024-01-17 09:55:02
【问题描述】:

我有一个 rails 3.2.3 应用程序,我正在我的 windows 机器上使用 git_bash 作为 cli 和 mingw32 作为环境(使用 railsinstaller 安装这个环境)和 postgres 作为 db。 但是 rmagick 有一些问题并且无法使用它,尽管 minimagick 可以正常工作。

现在,我要将应用程序移动到运行 OS X 山狮的新 mac 机器上。 我已经使用 rvm 在 OS X 上安装了 rails 3.2.8 和 ruby​​。我需要做什么才能将我的应用程序更新到 rails 3.2.8 并设置 db 和其他 gem,我应该删除还是不删除 gemfile.lock 以及我需要删除或添加或更改版本号的 gem。等等。

我是 Rails 新手,请帮忙

谢谢!

我应该使用自制软件安装 postgres 还是从 http://www.postgresql.org/download/macosx/ 下载 这是安装postgres的首选方式,这些方法的优缺点。

【问题讨论】:

    标签: postgresql ruby-on-rails-3.2 osx-mountain-lion rmagick gemfile


    【解决方案1】:

    只要您的应用中没有任何 Windows/机器特定的代码,您只需执行bundle install

    关于 Postgres,你从哪里得到它并不重要,只要它在你的 $PATH 上。如果您已经在使用 Homebrew,那么只需执行 brew install postgres 即可。

    【讨论】:

    • 我是否应该删除 gemfile.lock,因为它有很多参考资料,例如。 bcrypt-ruby (3.0.1-x86-mingw32)
    • @StarWars:我会尝试bundle install 看看它是否有效。 Bundler 不会在您的 Mac 上安装 Windows 文件。如果它没有为您提供 bcrypt,那么是的,绝对可以核对您的 Gemfile.lock。请报告,因为这是了解如何使用 Windows 的好信息!
    • 我做了一些事情让它工作,我很高兴它工作(没有检查所有的事情,因为我可能需要设置一些与测试相关的 gem,但是运行 rails s工作,所以我希望一切都好)。我不能在评论中写太多信息。因此,我在回答中解释了对我有用的事情。谢谢!
    【解决方案2】:

    Gemfile.lock 给出了一个 gem 列表,用于确保应用程序的所有副本使用相同的 gem 版本。

    因为我是唯一一个在开发这个应用程序的人,而且它还没有投入生产。所以,对我来说,核对 Gemfile.lock 并指定我现在想要的 gem 的更新版本更有意义。

    我做过的事情

    在清理了我的 tmp/ 目录中的一些数据后,从我的 windows 机器上复制了我的应用程序目录(tmp/ 目录有 100M 的数据)。

    使用brew install imagemagick安装imagemagick

    使用brew install postgresql安装postgresql

    使用rails new blog -d postgresql 生成了一个示例应用程序 根据 postgresql 更改了 database.yml 文件,因为它要求我的 mac 用户是用户名。 运行示例博客应用程序,它运行良好。创建了一个脚手架并输入了数据,一切正常。

    从博客应用程序中复制 Gemfile.lock 的内容并粘贴到我的应用程序的 Gemfile.lock 中

    将我的 Gemfile 中的 rails 版本从 3.2.3 更改为最新版本 3.2.8。更改了其他一些 gems 的版本。将 'minimagick' 替换为 'rmagick'。 (我在 Windows 上安装 rmagick gem 时遇到问题,minimagick gem 以某种方式在具有旧版本 imagemagick 的 Windows 上工作)。 更改了 database.yml。

    运行rake db:create:all创建所有数据库。

    运行rake db:migrate

    运行bundle,它会安装所有依赖项。

    运行rails s

    现在一切正常:)

    【讨论】: